Struktur/Liste in Datei speichern und lesen ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Darky
Beiträge: 210
Registriert: 18.09.2004 20:53
Wohnort: Gelsenkirchen / NRW
Kontaktdaten:

Struktur/Liste in Datei speichern und lesen ?

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Struktur/Liste in Datei speichern und lesen ?

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Darky
Beiträge: 210
Registriert: 18.09.2004 20:53
Wohnort: Gelsenkirchen / NRW
Kontaktdaten:

Re: Struktur/Liste in Datei speichern und lesen ?

Beitrag von Darky »

Supi danke :D :lurk: :lurk: < 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 ! :D
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Struktur/Liste in Datei speichern und lesen ?

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Struktur/Liste in Datei speichern und lesen ?

Beitrag 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.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Hoessi666
Beiträge: 19
Registriert: 09.12.2009 11:34
Computerausstattung: eMachine Notebook G520, Intel 575 @ 2GHz, 2GB Ram,Intel Mobile 4 Series Express
Wohnort: R´Lyeh

Re: Struktur/Liste in Datei speichern und lesen ?

Beitrag 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.

Code: Alles auswählen

While NextElement()
;Daten schreiben
Wend
Spart zwar nur ein paar Byte in der Datei, aber ist eine nette Alternative... :)
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Struktur/Liste in Datei speichern und lesen ?

Beitrag von GPI »

Code: Alles auswählen

While NextElement()
;Daten schreiben
Wend
Gefährlich - da fehlt ein ResetList()
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Hoessi666
Beiträge: 19
Registriert: 09.12.2009 11:34
Computerausstattung: eMachine Notebook G520, Intel 575 @ 2GHz, 2GB Ram,Intel Mobile 4 Series Express
Wohnort: R´Lyeh

Re: Struktur/Liste in Datei speichern und lesen ?

Beitrag von Hoessi666 »

GPI hat geschrieben:

Code: Alles auswählen

While NextElement()
;Daten schreiben
Wend
Gefährlich - da fehlt ein ResetList()
Erbsenzähler 8)
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().
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Struktur/Liste in Datei speichern und lesen ?

Beitrag 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.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Antworten