Pb avec fonction print

Résolu
boun Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
WhiteFang Messages postés 2063 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous!

J’ai un problème avec l’écriture dans un fichier.
J’ai une Base de données ACCESS où je dois récupérer des données pour ensuite les écrire dans un fichier. Chaque enregistrement doit faire 240 octets.
J’utilise donc une variable « wprel » de type variant où je stocke mes enregistrements. Puis j’utilise la fonction Print pour écrire dans le fichier « rolprel » le contenu de « wprel » :

Open "c:\rolprel" For Output As #2
(…)
Do Until rq.EOF ‘rq est un recordset
(…)
wprel = wprel + (données)
(…)
rq.MoveNext
Loop

rq.Close

Print #2, wprel
Close #2


Mon problème est que mon fichier fait 722 octets alors que le contenu de « wprel » fait 720 octets après traitement (=> 3 enregistrements de 240 octets).
J’ai essayé avec la fonction Write # mais j’ai le même problème.

Pouvez-vous m’aider ? Merci d’avance
A voir également:

4 réponses

WhiteFang Messages postés 2063 Date d'inscription   Statut Membre Dernière intervention   204
 
;-) Tu parles de la taille du fichier ?

Tu ne trouves pas normal que la taille du fichier soit supérieure à ce que tu lui a mis dedans, c'est ça ?

;-)
0
nico7382 Messages postés 279 Date d'inscription   Statut Membre Dernière intervention   50
 
Salut,
n'y a t-il pas un retour à la ligne de trop à la fin du fichier, ou un descripteur de fin de fichier en trop??
0
boun Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   8
 
Tout d'abord merci à tous les 2 de m'avoir consacré de votre temps.

- Réponse à Whitefang : Mon problème, c'est que mon fichier fait 2 octets de plus que la variable qui le remplit et je sais pas à koi correspond ces 2 octets. Je pense que c'est la fonction print qui impute ces 2 octets mais pour déclarer koi je sais pas?
Essaie de faire sous VBA :

var = "bonjour"

Open "c:\essai" For Output As #1
Print #1,var
Close #1


Tu verras que ton fichier essai fera 9 octets alors que var en fait que 7. Tu comprends ce que je veux dire?


Réponse à Nico : Non j'avais pas de retour chariot. Mais du coup, j'ai résolu mon problème en utilisant la fonction Put au lieu de Print ou Write et en modifiant quelques points :
- déclaré wprel en type string
- ouvert mon fichier #2 en mode binary au lieu de Output

Ainsi la fonction put n'impute aucun octet supplémentaire et remplit mon fichier #2 que du contenu de ma variable wprel.

Voilà merci encore à vous 2. A plus!
0
WhiteFang Messages postés 2063 Date d'inscription   Statut Membre Dernière intervention   204
 
;-)

Vi, je comprends mieux ta question !

Alors, saches une chose : Le contenu d'un fichier, c'est une chose, mais sa taille en est une autre !!

Quand tu enregistres un fichier, le système lui rajoute des informations, style Hdr1/Hdr2, qui sont les entêtes de fichier et qui servent à délimiter ton fichier sur le disque dur et à pouvoir le "gérer" !

Le système à besoin de savoir où commence ton fichier et où il finit, pour le manipuler... Utilisé par les FAT, par tout, en fait... Et tu verras que si ton fichier est "fragmenté", il augmentera aussi de taille, car à chaque fragment, il faudra rajouter l'adresse du prochain fragment de fichier, bref.... C'est normal...

;-)
0