Ecriture et lecture de fichier (binary)

nomadsoulnomad Messages postés 12 Date d'inscription mercredi 25 janvier 2006 Statut Membre Dernière intervention 23 juin 2006 - 25 janv. 2006 à 18:18
jannoman Messages postés 256 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 20 février 2008 - 25 janv. 2006 à 20:29
Bonjour, je developpe un editeur de niveau 3D pour un jeu sous visual basic 6, jai besoin de sauvegarder les données de cette facon dans le fichier (exemple) :

arbre 123,456,452
ou alors:
arbre 123 456 452

je veus recuperer ces valeur l'une apres l'autre !

jai essayer avec une ecriture en binaire comme ceci :

open "fichier" for binary as #free
Put #Free, , arbre & vbtab & xposi & vbtab & yposi & vbtab & zposi & vbcrlf
close #free

le resultat dans le fichier est le suivant : arbre 123 456 452

Mon probleme c'est que je n'arrive pas a recuperer les données que se soit avec la commande " open "fichier" for binary read as #free " pour lui la variable recuperer est vide !
exemple :
Open "fichier" For Binary As #Free


Dim essai As String


Get #Free, 1, essai
Dim ll As String
ll = MsgBox(essai, vbOKOnly)
close #free
le message box est vide , jai remplacer le 1 dans la ligne get #free par autre chose voire rien, et cela ne donne toujour rien ! Pourqouiiiiiiiiiiii ?

6 réponses

Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
25 janv. 2006 à 18:28
Le problème, c'est que dans ce mode, get remplit la variable passée en
paramètre jusqu'à la fin de la zone mémoire allouée à cette variable.
(donc si c'est un byte il prend un octet, si c'est un single, il en
prend 4 etc...)

Mais le type String en vb n'a pas de taille prédéfinie (enfin je
pense), mais tu peux le faire en ajoutant *n derrière la déclaration de
la variable :



dim essai as string *len(str(arbre & vbtab & xposi & vbtab & yposi & vbtab & zposi & vbcrlf))



Voila.



Julien.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
25 janv. 2006 à 18:29
Pour une lecture dans un fichier binaire, il vaudrait mieux utiliser une string de longueur fixe !! Mais tu peux le faire avec un ficheir texte ...

open "fichier" for output as #free
Print #Free, arbre & vbtab & xposi & vbtab & yposi & vbtab & zposi
close #free

Et pour la lecture
Dim Ligne As String, Infos() as string
Open "fichier" For Input As #Free
Line Input #Free, Ligne
close #free
Infos = Split(Ligne,vbTab)
Dim i as long
For i = 0 to uBound(Infos)
MsgBox Infos(i)
Next
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
25 janv. 2006 à 18:29
Heu y'a peut-être pas besoin d'utiliser str(), à toi de voir...
0
nomadsoulnomad Messages postés 12 Date d'inscription mercredi 25 janvier 2006 Statut Membre Dernière intervention 23 juin 2006
25 janv. 2006 à 18:47
yea merci d'avoir repondu si vite, je vait essayer vos methode merci beaucoup !!!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nomadsoulnomad Messages postés 12 Date d'inscription mercredi 25 janvier 2006 Statut Membre Dernière intervention 23 juin 2006
25 janv. 2006 à 18:56
purer vous etes des genie sa marche !!!!!!!!!! merci a tous les 2 ! jai utiliser la methode de crenaud76 ! je vais pouvoir enfin faire mon editeur de niveau 3D !!! et dire que j'en est passer des heures a chercher, et qu'il suffisait simplement de demander..... ( quel c... je sui) !

merci encore et peut etre a bientot !!!
0
jannoman Messages postés 256 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 20 février 2008 1
25 janv. 2006 à 20:29
une autre solution est d'attribuer un numéro à tes objets (ex : arbre = 1, mur = 2, ...) et de stocker juste le nombre
A+.
Thomas.
0
Rejoignez-nous