enregistrement Structure et liste chainée dans fichier

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

enregistrement Structure et liste chainée dans fichier

Message par comtois »

admettons que j'ai un truc de ce genre

Code : Tout sélectionner

Structure Toto
  a.l
  b.f
  c.b
EndStructure

Variable.Toto
Variable\a = 123456
Variable\b = 12.45
Variable\c = 127

NewList MaListe.Toto()
addelement(MaListe())
Maliste\b = 45.6

comment faire pour enregistrer ces valeurs dans un fichier ? et comment les restituer ?

Pour l'instant je fais simple

Code : Tout sélectionner

;enregistre Variable
WriteLong(Variable\a) 
WriteFloat(Variable\b) 
WriteByte(Variable\c)

;Enregistre MaListe 
ForEach MaListe()
 WriteLong(MaListe()\a
 WriteFloat(MaListe()\b
 WriteByte(MaListe()\c
Next
mais si ma structure était plus longue et si j'avais plusieurs structures , ça deviendrait vite fastidieux avec cette méthode .

Comme il est tard et que je vais me coucher ,je n'ai pas encore regardé , mais si vous avez des pistes sur lesquelles m'envoyer , je les prendrai demain :)

Je viens de jeter un oeil dans CodeArchive ,j'ai trouvé ça :

Code : Tout sélectionner

Procedure SaveLinkedList_Value(*FirstElement, StructureSize.l, File.s) 
  Protected *PosLL 
  If CreateFile(#SaveFile, File) 
    *PosLL = *FirstElement 
    Repeat 
      WriteData(*PosLL, StructureSize) 
      *PosLL = PeekL(*PosLL - 8) + 8 
    Until *PosLL = 8 
    CloseFile(#SaveFile) 
  EndIf 
EndProcedure 
Procedure LoadLinkedList_Value(StructureSize.l, File.s) 
  If ReadFile(#SaveFile, File) 
    ClearList(ValueLinkedList()) 
    While Eof(#SaveFile) = 0 
      AddElement(ValueLinkedList()) 
      ReadData(@ValueLinkedList(), StructureSize) 
    Wend 
    CloseFile(#SaveFile) 
  EndIf 
EndProcedure 
ça semble correspondre à ce que je cherchais , reste à trouver pour

Code : Tout sélectionner

WriteLong(Variable\a)
WriteFloat(Variable\b)
WriteByte(Variable\c) 
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

c'est pareil:

Code : Tout sélectionner

WriteData(@Variable, SizeOf(YourStructure))
ReadData(@Variable, SizeOf(YourStructure))
A noter que ca ne marche pas avec les strings..
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Merci , ça tombe bien , je n'avais pas de string à stocker :lol:
Répondre