Pb avec fonction print

Résolu/Fermé
boun Messages postés 17 Date d'inscription samedi 17 avril 2004 Statut Membre Dernière intervention 21 juillet 2006 - 31 août 2005 à 11:41
WhiteFang Messages postés 2063 Date d'inscription dimanche 1 septembre 2002 Statut Membre Dernière intervention 15 février 2008 - 2 sept. 2005 à 10:22
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 dimanche 1 septembre 2002 Statut Membre Dernière intervention 15 février 2008 204
1 sept. 2005 à 10:45
;-) 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 lundi 6 juin 2005 Statut Membre Dernière intervention 22 décembre 2010 50
1 sept. 2005 à 13:03
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 samedi 17 avril 2004 Statut Membre Dernière intervention 21 juillet 2006 8
2 sept. 2005 à 10:08
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 dimanche 1 septembre 2002 Statut Membre Dernière intervention 15 février 2008 204
2 sept. 2005 à 10:22
;-)

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