Sauvegarde d'un tableau simple en fichier

Programmation d'applications complexes
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Sauvegarde d'un tableau simple en fichier

Message par Thyphoon »

voilà je créer un tableau avec liste alléatoire.... je la sauvegarde et je la recharge... la ça marche.
maintenant qu'il y a une sauvegarde... vous mettez en commentaire la sauvegarde
et vous recharger la liste et là le dernier chiffre n'est plus le bon .... pourquoi ... je comprends pas trop ...
si quelqu'un a une idée ... :?

Code : Tout sélectionner

Global Dim RandomList.l(1)

Procedure SaveRandomList()
  Size.l=ArraySize(RandomList())*4; .l = 4 octets
  *Target=AllocateMemory(Size+8)
  CompressedSize=PackMemory(@RandomList(),*Target, Size , 9)
  If CompressedSize
    If CreateFile(0,"List.tmp")
      WriteLong(0,ArraySize(RandomList()))
      WriteData(0, *Target,CompressedSize )
      CloseFile(0)
    EndIf
  EndIf
  Debug Size
  Debug CompressedSize
  Debug *Target
  FreeMemory(*Target)
EndProcedure

Procedure LoadRandomList()
  If OpenFile(0,"List.tmp")
    Size.l=ReadLong(0)*4; .l = 4 octets
    ReDim RandomList(Size)
    LengthToRead=Lof(0)-4+8;Moins les 4 octets de depart qui serve a connaitre la taille du tableau et +8 comme demandé dans la notice
    *Source=AllocateMemory(LengthToRead)
    ReadData(0, *Source, LengthToRead)
    UnpackMemory(*Source, @RandomList())
    CloseFile(0)
  EndIf
EndProcedure

Procedure MakeRandomList(Min,Max)
  RandomSeed(ElapsedMilliseconds())
  ReDim RandomList(Max)
  For z=Min To Max
    RandomList(z)=z
  Next
  For z=Min To Max
    Swap RandomList(z),RandomList(Min+Random(Max-Min))
  Next
EndProcedure

MakeRandomList(1,130)

For z=0 To 130
Debug "RandomList("+Str(z)+")="+Str(RandomList(z))
Next

SaveRandomList()
Debug"_____"
LoadRandomList()
For z=0 To 130
Debug "RandomList("+Str(z)+")="+Str(RandomList(z))
Next
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Sauvegarde d'un tableau simple en fichier

Message par flaith »

met aussi en commentaire ton "makerandomlist" et les 3 lignes du dessous et retente, ca doit être identique :mrgreen:

** edit ** Etant donné que tu affiches 2 fois le tableau, prend seulement en compte le deuxième listing
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Sauvegarde d'un tableau simple en fichier

Message par Le Soldat Inconnu »

chez moi ça marche mais il y a truc qui me gène, c'est le +8 dans

Code : Tout sélectionner

LengthToRead=Lof(0)-4+8
retire ce +8, tu fais un dépassement de longueur dans la lecture du fichier (j'ai cherché dans la doc et je ne vois vraiment ou tu l'as trouvé)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre