Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Problème avec FILEBIN Sam 3 Déc 2011 - 14:07 | |
| Bonjour, Quelqu'un a déjà utilisé ces fonctions ? C'est tout bête, je n'arrive pas à sauvegarder 1 variable... - Code:
-
DIM Var1 Var1=1224547878 FILEBIN_OPEN_WRITE 1,"test.bin" FILEBIN_WRITE 1,Var1 FILEBIN_CLOSE 1 Le problème c'est que la fonction FILEBIN_WRITE ne sauvegarde qu'[b]un seul[.b] octet. Et comme ma variable Var1 est supérieure à 255, je me fais jeter... Je pourrais faire ceci: - Code:
-
DIM Var1,i,j Var1=1224547878 : ' en hexa : 48FD1E26 FILEBIN_OPEN_WRITE 1,"test.bin" j=Var1 FOR i = 1 to 4 FILEBIN_WRITE 1,BIN_AND(j,255) j = INT(j/256) NEXT i FILEBIN_CLOSE 1 C'est un peu bourrin comme méthode... non ? Il ya pas plus simple ? | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Problème avec FILEBIN Sam 3 Déc 2011 - 15:20 | |
| C'est ça le binaire, octet par octet... Ou alors il faut faire comme tu dis. Ou alors il faut sauvegarder dans un fichier ascii: STR$(var1) PS oui Nardo, il y a plus simple: - Code:
-
DIM var1 var1 = 1224547878 filebin_open_write 1, "test.bin" filebin_hexa_write 1, len(hex$(var1))/2, hex$(var1) filebin_close 1 end et là la variable est bien écrite en binaire dans le fichier. Panoramic est plein de ressources, mon frère. Vérification: - Code:
-
DIM var1, h$ var1 = 1224547878 print var1 filebin_open_write 1, "test.bin" filebin_hexa_write 1, len(hex$(var1))/2, hex$(var1) filebin_close 1 ' Vérification filebin_open_read 1,"test.bin" filebin_hexa_read 1, 4, h$ filebin_close 1 print HEX(h$) end PROBLEME: si on sauvegarde la variable, c'est qu'on veut pouvoir la relire plus tard. Or, pour la relecture comme j'ai fait, on ne connaît pas sa longueur, j'ai mis 4 parce que je sais que ça fait 4 octets, mais pour une variable quelconque on n'a aucun moyen de le savoir. Ou alors il faut également sauvegarder la longueur ? ou sauvegarder systématiquement avec une longueur donnée, par exemple 4 ou 8 octets: filebin_hexa_write 1, 8, hex$(var1) et pareil à la relecture. C'est ce qui se passe quand on met des données dans un fichier binaire, par exemple l'en-tête d'un fichier BMP, certaines valeurs sont sur 2 octets, d'autres sur 4, d'autres sur 8, c'est défini à l'avance suivant la précision demandée, entier, entier long, simple ou double précision. Et le programme devient (avec 8 octets, par exemple): - Code:
-
DIM var1, h$, lg var1 = 1224547878 print var1 lg = 8: ' nombre d'octets de sauvegarde de la variable (par exemple) filebin_open_write 1, "test.bin" h$ = hex$(var1): h$ = STRING$(2*lg-LEN(h$),"0") + h$ filebin_hexa_write 1, lg, h$ filebin_close 1 ' Vérification filebin_open_read 1,"test.bin" filebin_hexa_read 1, lg, h$ filebin_close 1 print HEX(h$) end Pardon pour cette longue digression Nardo, mais je m'amuse...
Dernière édition par JL35 le Sam 3 Déc 2011 - 16:27, édité 1 fois | |
|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Problème avec FILEBIN Sam 3 Déc 2011 - 16:26 | |
| Pas mal l'astuce ! Mes données sont sur 4 octets (entier) J'ai crée une petite lib pour combler mes besoins. Je vais certainement modifier celle-ci pour appliquer ton astuce... | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Problème avec FILEBIN Sam 3 Déc 2011 - 16:28 | |
| J'ai édité, pour mettre une longueur fixe. | |
|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Problème avec FILEBIN Sam 3 Déc 2011 - 17:15 | |
| Mise en place de ton astuce en cours... une petite faille quand même : si je veux stocker une valeur négative je vais avoir par exemple pour -2 : FFFFFFFE si je stocke sur 4 octets, ça va planter sur : STRING$(2*4-LEN(AVL_SaveArbre_h$),"0") il manque un petit test sur l'insertion des "0"... | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Problème avec FILEBIN Sam 3 Déc 2011 - 17:23 | |
| eh oui, tu as mis le doigt dessus! On n'a pas idée, aussi, d'être négatif à ce point ! Tu n'as qu'à stocker sur 6 ou 8 octets, là ça marche. D'ailleurs à mon avis c'est une erreur de Panoramic. On devrait avoir le droit de faire STRING$(0, "0"), qui ne ferait aucun '0' ajouté, en basic c'était permis. | |
|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Problème avec FILEBIN Sam 3 Déc 2011 - 17:33 | |
| C'est ok, j'ai mis en place dans ma librairie AVL. Merci JL35 ! | |
|
Contenu sponsorisé
| Sujet: Re: Problème avec FILEBIN | |
| |
|