VB6 & fichier binaire [Résolu]

Messages postés
52
Date d'inscription
mercredi 12 mars 2003
Dernière intervention
2 octobre 2009
- - Dernière réponse : FRatvks
Messages postés
52
Date d'inscription
mercredi 12 mars 2003
Dernière intervention
2 octobre 2009
- 3 mars 2008 à 19:21
Bonjour,

J'ai un souci a la sauvegarde des fichier en mode binaire :

je recupere des info dans text1 que j'ai besoin de sauvegarder dans un fichier en format binaire

FiletempNum = FreeFile
Open File2DownloadPath For Binary Access Write As #FiletempNum 'Len = Len(Form_main.Text1.Text) 'creation du fichier
       Put #FiletempNum, , Form_main.Text1.Text
Close #FiletempNum

Si le fichier est trop long soit
 il est coupé soit j'ai un depassement de capacité

Comment faire ?

Merci a tous
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
3
Merci
RichTextBox, taille illimitée

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php

Merci cs_casy 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_casy
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
3
Merci
Salut
Simple : Après le Open puis le premier Put, il te suffit de laisser le fichier ouvert puis de faire d'autres Put derrière.
Une fois que toutes les données sont stockées, tu pourras faire le Close final.

Pense à regarder dans l'aide pour chaque propriété sur lesquels tu as un doute.
Par exemple, le "Len" de ta fonction Open est clairement défini avec une valeur maxi de 32 ko.
Ca t'aurait mis la puce à l'oreille.

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)

Merci cs_Jack 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Salut
"Si le fichier est trop long " : Tu veux dire "Si le TEXTE est trop long " ?

J'ai fait l'essai et je n'ai aucun souci, que le contenu initial du fichier soit vide ou innexistant, contienne peu de texte ou plus de texte.
Les lignes que tu as mis ici fonctionne.

De toute façon, ça écrit du texte.
Pourquoi vouloir utiliser Binary ?
Une TextBox ne sait stocker que du texte et en quantité limitée : 2048 caractères ou 32765 en mode multi-ligne

Explique mieux ton problème.

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)
Commenter la réponse de cs_Jack
Messages postés
52
Date d'inscription
mercredi 12 mars 2003
Dernière intervention
2 octobre 2009
0
Merci
Salut Jack,

Quand je parle de fichier il s'agit des information contenu dans text1

J'utilise le mode multi-ligne

Mon text1 reçoit des données venant de machine qui communique en format ASCII meme si c'est pas affichage c'est stocké dans le textbox

Je veux ecrire en mode binaire car si le le sauve en mode text ca me rajoute un CRLF a la fin du fichier qui me casse les pied dans d'autres procedures qui réutilise ces données

Merci
Commenter la réponse de FRatvks
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Sachant que la longueur maxi du texte dans une textbox est de 2048 caractères, 32767 si l'option multiline est activée, sachant que l'instruction Put est capable de gérée jusqu'à 2147483647 enregistrements (octets pour un fichier ouvert en mode binaire soit 2GO), il n'y a aucune raison que ton fichier soit trop long ou qu'il est un dépassement de capacité.

Ton problème vient surement d'ailleurs.

Execte ton code en pas à pas pour voir ou c'est que ça plante, et éventuellement inspecter le contenu de tes variables à chaque étape.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Commenter la réponse de cs_casy
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Casy a eu la même intuition que moi :
C'est le stockage des données qui ne fonctionne pas, pas son écriture.
L'erreur n'apparait pas sur les lignes que tu as passé, mais sur celles où tu insères des données dans ta TextBox.

La solution est simplement de remplacer la TextBox par une variable de type String.
Pour l'affichage en temps réel, à toi de bricoler avec les données que tu reçois.

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)
Commenter la réponse de cs_Jack
Messages postés
52
Date d'inscription
mercredi 12 mars 2003
Dernière intervention
2 octobre 2009
0
Merci
Il y a t-il plus "grand qu'une textbox ?
ca fait de toute facon un peutr cout pour sauvegarder mes données

Merci
Commenter la réponse de FRatvks
Messages postés
52
Date d'inscription
mercredi 12 mars 2003
Dernière intervention
2 octobre 2009
0
Merci
Ok MERCI les gars, je test ca demain,

Effectivement Le textbox semble limité a 65K octet

Quand je sauvegarde j'ai donc un fichier de 65K pas plus (le "coupé" dans ma question initiale)

Quand je defini la taille du fichier avec Len
Open File2DownloadPath For Binary Access Write As #FiletempNum Len = Len(Form_main.Text1.Text)
la ça me renvoi dépassement de capacité

Mais je pourrais aussi enregister le données recu a la volée mais je ne sais pas ajouter dans un fichier binaire
En mode Texte j'utilise le mode APPEND et j'ajoute au fur et a mesure  mais j'ai des CRLF qui s'ajoute dans mes info et ca me pose des Pb !
Comment peut -on "ajouter" a un fichier binaire des informations a la fin du fichier  ?

Merci de votre aide et bonne soirée
Commenter la réponse de FRatvks
Messages postés
14317
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
10 décembre 2018
0
Merci
Bonjour

Pour écrire en texte sans avoir le CrLf à la fin, il faut mettre un ; ou un , (je ne sais plus lequel des 2, il y en a un qui fait une Tab et l'autre qui colle à la suite) avec le Print # :

Open mFileName For OutPut as #NumFile 'Output ou Append

Print #NumFile, MonTexte; 'Je pense plus que c'est cette syntaxe
'ou
Print #NumFile, MonTexte,

Close #NumFile

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Commenter la réponse de NHenry
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
;  colle le texte suivant
,  insère une tabulation
Commenter la réponse de cs_Jack
Messages postés
52
Date d'inscription
mercredi 12 mars 2003
Dernière intervention
2 octobre 2009
0
Merci
Bonjour a tous,

J'ai finalement opté pour la Richtextbox qui ne m'as rien demandé à faire de plus que de remplacer ma textbox par la Richtextbox -trop simple !

n plus ecrire les données a la volée me posait un autre Pb qui était que si je pert la machine qui pisse ses données je repart a Zéro et si c'est bon je garde les données récupérées. donc la solution de la Rihtextbox était la plus simple dans mon cas je pense.
J'apprécie votre aide et votre réactivité sur les questions et j'ai appris encore un peu encore sur les manipulations de fichier Text...

Merci encore

FR
Commenter la réponse de FRatvks

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.