Page 1 sur 1

Sauvegarde d'un tableau simple en fichier

Publié : ven. 13/nov./2009 17:50
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

Re: Sauvegarde d'un tableau simple en fichier

Publié : ven. 13/nov./2009 18:36
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

Re: Sauvegarde d'un tableau simple en fichier

Publié : ven. 13/nov./2009 18:45
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é)