cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 29 déc. 2008 à 18:17
Salut
Get n'est qu'une lecture.
Si tu as défini ton tableau de Byte avec 512 maxi, donc 513 éléments puisque les tableaux commencent à l'index 0 (sauf avec "Option Base 1" en tête de code), tu liras 513 Bytes à chaque instruction Get.
Nota 1 : L'instruction Get s'utilise après l'ouverture en mode Bianry, pas Input
Open "a.txt" For Binary Access Read As #1
et on ne précise pas la longueur de lecture, cette longueur est définie par la taille de la variable qui recevra les données, ici, ton tableau de Bytes
Nota 2 : La syntaxe de l'instruction n'est pas bonne, il manque l'offset 'x' :
Get #1, x, arGet
Si tu dois lire sans préciser à quel offset te caler, il suffit de ne rien mettre entre les virgules :
Get #1, , arGet
Il lira à l'endroit où il se trouve.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 29 déc. 2008 à 18:19
PS : Lecture, c'est à dire qu'il lit les Bytes contenus dans le fichier et les écris dans ton tableau.
Le fichier reste intact.
Voir instruction Put pour l'écriture vers le fichier (attention à l'offset)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 29 déc. 2008 à 19:45
Bonjour
La fonction Eof() est plutôt utilisée pour les fichiers ouverts en Input ou Random. En Binary, il est préférable d'utiliser LOF, Loc ou la fonction Seek.
Duke49
Messages postés552Date d'inscriptionjeudi 12 octobre 2006StatutNon membreDernière intervention24 janvier 20234 29 déc. 2008 à 20:32
Jusqu'à là je suis d'accord sur les précisions.
La situation:
Mon tableau est remplit au premier passage de 512 octets lus.
Au deuxième passage de Eof ou Lof que fait concrètement Get avec ce tableau ?
Exemple, lecture n°1
arGet(1) = FF
arGet(2) = A5
Exemple, pré-lecture n°2 (action de get ???)
arGet(1) = ""
arGet(2) = ""
ou
erase arGet
redim arGet(512)
ou
arGet(1) = 0
arGet(2) = 0
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 29 déc. 2008 à 22:46
Ben... jack a parfaitement résumé l'action : tu liras 513 Bytes à chaque instruction Get.
Donc à chaque Get, tu liras 513 bytes (par défaut) ou 512 Bytes (avec Option Base 1) à la position actuelle (si offset n'est pas précisé) ou à la position x (si tu précises l'offset) du fichier.
Il n'y a donc aucune pré-lecture, et je ne vois pas ce que tu veux dire par ce mot. Quant à "l'action de Get" elle est au 2e passage identique à celle au premier passage.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 déc. 2008 à 02:38
Re
Pense à regarder l'aide de VB6, tu y trouveras des explications.
Comme je le disais, en dimensionnant un tableau de 0 à 512, cela fait 513 Bytes lus à chaque passe.
Si tu ne précises pas l'offset, le pointeur se déplace à la fin de la dernière zone lue.
La lecture suivante lira donc les données situées derrière.
Par contre, je ne sais pas ce qui se passe si tu essaye de lire 513 bytes alors qu'il ne reste que 10 bytes entre la position actuelle et la fin du fichier.
Si tu veux lire une zone puis la relire ensuite, il faut utiliser :
- Soit donner un chiffre à l'offset, entre les 2 virgules de la commande Get
- Soit utiliser la fonction Seek pour positionner le pointeur au bon endroit; à toi de le gérer.
Si tu nous disais ce que tu veux faire, on aurais peut-être une chance de te dire comment faire.
Pour l'instant, essaye de lire et de comprendre ce qu'on te répond + Regarde l'aide
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)