Seite 1 von 1
Struktur/Liste in Datei speichern und lesen ?
Verfasst: 05.08.2011 13:41
von Darky
Ist es möglich eine ganze struktur zu speichern und zu lesen zbs mit :
Code: Alles auswählen
structure test
a.s
b.l
c.b
endstructure
global newlist t.test()
addelement(t())
t()\a="Das ist ein test"
t()\b=9999
t()\c=1
;==== GEHT SOWAS ???? ====
openfile(1,"test.txt")
writedata(1,@t(),sizeof(test))
closefile(1)
Meine bisherigen versuche speichern zwar angeblich lesen aber nichtmehr aus ...
ist sowas oder sowas änliches möglich ?
danke für antworten
Re: Struktur/Liste in Datei speichern und lesen ?
Verfasst: 05.08.2011 13:49
von STARGÅTE
In diesem Fall nicht.
Es ist nur möglich Strukturen ohne Strings mit einem "rutsch" zu lesen/schreiben.
Wenn du die Länge deiner Strings kennst bzw. begrenzen kannst, kannst du Fix-Strings nehmen, dann kannst du auch so schreiben wie du es im Code machst.
Code: Alles auswählen
structure test
a.s{255} ; String mit maximal 255 Zeichen
b.l
c.b
endstructure
Ansonsten musst du selbst die Strings speichern.
ZB mit WriteString(File, String) und einem WriteCharacter(File, 0) damit der String endet.
Re: Struktur/Liste in Datei speichern und lesen ?
Verfasst: 05.08.2011 13:53
von Darky
Supi danke

< für dich !
und wie würde das nun aussehen wenn ich eine linkedlist speichern will ? Sagen wir mit fixstrings
Gruß Darky
P.s.: Wäre die Monkey Community mal so toll wie die von Purebasic =( Da wartet man tage auf antworten !!! echt lob an diese community !

Re: Struktur/Liste in Datei speichern und lesen ?
Verfasst: 05.08.2011 14:04
von STARGÅTE
Derzeit bietet PureBasic noch nicht die Möglichkeit solche Sachen "mit einer" Funktion zu Speichern/Laden.
Das heißt bei Listen müsstest du auch selber einmal die Anzahl der Elemente speichern und dann nacheinander die Elemente selbst:
Code: Alles auswählen
WriteLong(File, ListSize(Liste()))
ForEach Liste()
WriteData(); ...
Next
und beim lesen.
Code: Alles auswählen
anzahl = ReadLong(File)
For N = 1 to Anzahl
AddElement(Liste())
ReadData(File, @Liste(), ...)
Next
Re: Struktur/Liste in Datei speichern und lesen ?
Verfasst: 15.08.2011 07:12
von GPI
Liegt daran, das linkedList in Speicher nicht an einen Stück stehen müssen, sondern Kreuz und Quer verteilt sein können. Ich glaub nicht, das da so schnell was kommt.
Re: Struktur/Liste in Datei speichern und lesen ?
Verfasst: 15.08.2011 07:56
von Hoessi666
Falls man in der Datei nur die Liste spreichert, oder die Liste am Ende der Datei ist, könnte man beim Laden abfragen, ob das Ende des Files erreicht ist ("Eof()"-Befehl) oder nicht.
Wenn nicht lädt man einen weiteren Listeneintrag, ansonsten springt man aus der Schleife raus.
Code: Alles auswählen
While Eof()<>0
AddElement(Liste())
;DatenLaden und zuordnen
wend
Beim Erstellen könnte man dann analog die Liste mit "NextElement()" durchlaufen und Stück für Stück speichern.
Spart zwar nur ein paar Byte in der Datei, aber ist eine nette Alternative...

Re: Struktur/Liste in Datei speichern und lesen ?
Verfasst: 15.08.2011 09:22
von GPI
Gefährlich - da fehlt ein ResetList()
Re: Struktur/Liste in Datei speichern und lesen ?
Verfasst: 15.08.2011 11:38
von Hoessi666
GPI hat geschrieben:
Gefährlich - da fehlt ein ResetList()
Erbsenzähler
Dass man an den Anfang der Liste geht setze ich mal voraus. Ausserdem würde er die Schleife ja nicht durchlaufen, wenn man ohne ResetList() das nächste Element versucht aufzurufen und gelichzeitig am Ende der Kette steht!
Gänzlich ungefährlich ist´s per Foreach Liste().
Re: Struktur/Liste in Datei speichern und lesen ?
Verfasst: 15.08.2011 12:07
von GPI
Wenn das am Ende der Liste steht, dann hat man ja noch Glück und merkt es, weil halt nichts gespeichert wird. Blöd ist, wenn man an Element 4 von 100 ist und sich wundert, woher der Datenverlust kommt.
Foreach ist hier in der Tat sowohl die kürzere als auch die sichere Lösung.