FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
2.03 du 8 Mars 2013: lecture de disques entiers ! Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-28%
Le deal à ne pas rater :
-28% Machine à café avec broyeur à grain MELITTA Purista
229.99 € 318.99 €
Voir le deal

 

 2.03 du 8 Mars 2013: lecture de disques entiers !

Aller en bas 
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

2.03 du 8 Mars 2013: lecture de disques entiers ! Empty
MessageSujet: 2.03 du 8 Mars 2013: lecture de disques entiers !   2.03 du 8 Mars 2013: lecture de disques entiers ! EmptyVen 8 Mar 2013 - 19:04

Nouvelle version:
KGF.dll V2.03 du 8 Mars 2013

Cette version apporte une grande nouveauté au niveau des fichiers binaires ! On peut maintenant ouvrir, fermer et lire des partitions ou disques entiers, comme si ces éléments étaient un fichier binaire ! Pour cela, OpenBinaryFile, CloseBinaryFile et ReadBlockFromBinaryFileToString acceptent un nom de fichier du format X: (une lettre majuscule suivi d'un deux-point), sans autres spécifications ni slash ni back-slash.

Les fonctions ReadBlockFromBinaryFileToString et ReadBinaryFileRecord travaillent alors sur le volume désigné exactement comme si elles travaillaient sur un fichier normal. A une exception près: comme la lecture se fait dans se cas par blocs de 512 caractères, la fonction retourne bien le nombre de caractères souhaité à partir de la position choisie, mais seulement jusqu'à la limite du bloc dans lequel se trouve la position de début. On ne peut pas faire de lecture à cheval sur 2 ou plusieurs blocs.

Et il y a de nouvelles fonctions:

lecture des ncar% premiers caractères d'un bloc disque SANS ouverture/fermeture de fichier:
KGF.dll: res% = dll_call4("ReadDriveBlock",adr(drive$),adr(buf$),nblock%,ncar%)
KGF_SUB.bas: ReadDriveBlock(drive$,nblock%,ncar%)


retourner la liste de tous les disques connectés sur le système:
KGF.dll: res% = sll_call2("ListAllDevices",adr(list$),typ%)
KGF_SUB.bas: ListAllDevices(typ%)


tester si un disque est sur une prise USB:
KGF.dll: res% = dll_call1("IsDriveOnUSB",adr(drive$))
KGF_SUB.bas: IsDriveOnUSB(drive$)


Modules modifiés:
KGF.dll
KGF_SUB.bas
KGF.chm, KGF.doc, KGF.pdf


La doc a été complétée et corrigée sur certains points, en particulier les codes retour des fonction de gestion de fichiers binaires.

Et voici un programme de démo. Il faut brancher un disque ou une clé USB, adapter la ligne 5 pour spécifier le nom du disque, puis lancer le programme. Choirir le numéro de bloc et un octet de départ, puis cliquer sur Lire. Le mémo de gauche donne un dump du bloc entier, le mémo du milieu en haut donne un dump des 32 caractères à partir de la position de début choisie, et le mémo du milieu en bas donne la liste des disques connectés.

Le mémo à droite donne le contenu des 4 zones d'un enregistrement défini pour lire le début du bloc 0 (MBR du disque). Les 3 premiers octets contiennent une instruction JMP (sans intérêt pour nous), et les 8 caractères suivants donnent le nom du programme ou système qui a formaté le disque. J'ai donc défini 3 champs de type BYTE (ayant chacun une longueur de 1 octet), et un champ string de longueur 8 octets. La fonction ReadBinaryFileRecord charge alors directement les variables concernées par leur contenu. Et au passage, on peut voir l'intérêt des champs de type BYTE (et WORD) qui représentent un entier sur 8 (ou 16) bits, et qui est automatiquement étendu à 32 bits par la fonction de lecture, de sorte que l'information soit utilisable par Panoramic.

Amusez-vous !
Code:
' analyse_disque_FAT32bas

label start

dim int1%, int2%, int3%, format$
format$ = string$(8," ")

dim disk$ : disk$ = "G:"
dim i%, buf$, d$, nblock%, debut%

width 0,1000
alpha 10 : top 10,10 : left 10,250 : caption 10,"Bloc:"
alpha 12 : top 12,40 : left 12,250 : caption 12,"Début:"
alpha 4 : top 4,120 : left 4,250 : caption 4,"Liste des unités:"
memo 1 : top 1,10 : left 1,10 : width 1,200 : height 1,400 : font_name 1,"Courier"
  bar_vertical 1
edit 11 : top 11,10 : left 11,300 : width 11,40 : text 11,"0"
edit 13 : top 13,40 : left 13,300 : width 13,40 : text 13,"1"
button 3 : top 3,70 : left 3,300 : caption 3,"Lire" : on_click 3,start
memo 2 : top 2,140 : left 2,250 : width 2,200 : height 2,200 : font_name 2,"Courier"
memo 5 : top 5,10 : left 5,490 : width 5,200 : height 5,400 : font_name 5,"Courier"
  bar_vertical 5
memo 6 : top 6,10 : left 6,770 : width 6,200 : height 6,400 : font_name 6,"Courier"
  bar_vertical 6

KGF_initialize("KGF.dll")

end

start:
  if numeric(text$(11))=0
    message "Numéro de bloc invalide."
    return
  end_if
  nblock% = val(text$(11))
  if numeric(text$(13))=0
    message "Début invalide."
    return
  end_if
  debut% = val(text$(13))
  if (debut%<1) or (debut%>512)
    message "Début invalide."
    return
  end_if

  ListAllDevices(0)
  clear 2
  caption 4,"Unités connectées: "+str$(i%)
  item_add 2,trim$(ListAllDevices$)

  ReadDriveBlock(disk$,nblock%,512)
  clear 1
  for i%=1 to 512
    item_add 1,str$(i%)+": "+str$(asc(mid$(ReadDriveBlock$,i%,1)))+"="+mid$(ReadDriveBlock$,i%,1)
  next i%

  OpenBinaryFile(disk$)

  ReadBlockFromBinaryFileToString(disk$,32,nblock%*512+debut%)
  clear 5
  for i%=1 to 32
    item_add 5,str$(i%)+": "+str$(asc(mid$(ReadBlockFromBinaryFileToString$,i%,1)))+"="+mid$(ReadBlockFromBinaryFileToString$,i%,1)
  next i%

  CloseBinaryFile(disk$)
 
  define_record(4)
  add_byte_field(adr(int1%))
  add_byte_field(adr(int2%))
  add_byte_field(adr(int3%))
  add_string_field(adr(format$),8)
  build_record()
 
  ReadBinaryFileRecord(disk$,record$,1)
  clear 6
  item_add 6,"4 premiers champs du bloc 0:"
  item_add 6,"int1% = "+str$(int1%)+" soit "+str$(bin_and(int1%,255))
  item_add 6,"int2% = "+str$(int2%)+" soit "+str$(bin_and(int2%,255))
  item_add 6,"int3% = "+str$(int3%)+" soit "+str$(bin_and(int3%,255))
  item_add 6,"format$ = "+format$

return

#INCLUDE "KGF_SUB.bas"



Dernière édition par Klaus le Ven 8 Mar 2013 - 21:44, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




2.03 du 8 Mars 2013: lecture de disques entiers ! Empty
MessageSujet: Re: 2.03 du 8 Mars 2013: lecture de disques entiers !   2.03 du 8 Mars 2013: lecture de disques entiers ! EmptyVen 8 Mar 2013 - 19:17

Bonsoir Klaus,
On ne peut plus te répondre, tu nous dépasses de partout.
Dans un poste à côté: binaire et inverse, j'ai mis que j'aller me voir dans la glace, mais là je ne peux pas, je suis aveuglé.
Bonsoir.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

2.03 du 8 Mars 2013: lecture de disques entiers ! Empty
MessageSujet: Re: 2.03 du 8 Mars 2013: lecture de disques entiers !   2.03 du 8 Mars 2013: lecture de disques entiers ! EmptyVen 8 Mar 2013 - 21:48

J'ai modifié le post initial pour la version 2.03, à 21h45 le 8 Mars,2013.

Je vous conseille de recharger KGF.dll, KGF_SUB.bas et KGF.chm.

La nouveauté: la fonction ReadBinaryFileRecord sait travailler maintenant également sur des partitions et disques entiers. On peut ainsi définir un enregistrement avec des champs décrivant un bloc (secteur) d'un disque. Et la lecture va charger directement toutes les variables, numériques ou texte, avec les valeurs appropriées. Idéal pour analyser un disque en difficulté, par exemple.

Le programme de démo a été étendu pour montrer cette possibilité.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





2.03 du 8 Mars 2013: lecture de disques entiers ! Empty
MessageSujet: Re: 2.03 du 8 Mars 2013: lecture de disques entiers !   2.03 du 8 Mars 2013: lecture de disques entiers ! Empty

Revenir en haut Aller en bas
 
2.03 du 8 Mars 2013: lecture de disques entiers !
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» 2.02 du 5/3/2013: types de données "entiers" 8 et 16 bits
» 2.04 du 10 Mars 2013 - correction d'un bug
» 2.05 du 14 Mars 2013: gestion de Excel !
» 2.08 du 29 Mars 2013: amélioration de ClickIntercept
» 2.06 du 15 Mars 2013: 3 nouvelles fonctions Excel

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: