Hallo Samson,
ich habe mal vor kurzem was programmiert was die Speicherung von Daten angeht.
In meinem Beispiel habe ich als Beispiel 3 Stringelder mit bestimmter Länge, die dann zusammengefasst in eine Zeile von einer Textdatei gespeichert werden. Und zwar immer anhängend an die letzte Zeile. Das Auslesen ist ja dann nicht mehr schwierig, da du die Feldlängen ja kennst mit:
-Ergebnis$ = Left(String$, Laenge)
-Ergebnis$ = Mid(String$, StartPosition, Laenge)
-Ergebnis$ = Right(String$, Laenge
Der Code ist in PB 4, wenn du ihn in PB 3.94 haben willst, dann schau mal in PureBasic Lounge rein.
Code: Alles auswählen
If OpenWindow(0,216,0,500,300,"Testfenster",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(0))
TextGadget(1, 20, 20, 150, 20, "Dateneingabefenster")
TextGadget(2, 20, 60, 40, 20, "Text1")
StringGadget(3, 60, 60, 60, 20, "") ;Eingabefeld
TextGadget(4, 20, 100, 40, 20, "Text2")
StringGadget(5, 60, 100, 100, 20, "")
TextGadget(6, 20, 140, 40, 20, "Text3")
StringGadget(7, 60, 140, 150, 20, "")
ButtonGadget(8, 60, 200, 100, 30, "Daten hinzufügen")
ButtonGadget(9, 200, 200, 100, 30, "Beenden")
TextGadget(10, 150, 60, 380, 20, "Nur die ersten 10 Zeichen werden übernommen")
TextGadget(11, 180, 100, 380, 20, "Nur die ersten 15 Zeichen werden übernommen")
TextGadget(12, 230, 140, 380, 20, "Nur die ersten 25 Zeichen werden übernommen")
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
If EventID = #PB_Event_Gadget
If EventGadget()=8
text1s.s = GetGadgetText(3) ;auslesen vom Stringgadget
ergebnis1s.s = LSet(text1s.s, 10) ;auffüllen/begrenzen des Stringgadget auf 10 Zeichen
text2s.s = GetGadgetText(5)
ergebnis2s.s = LSet(text2s.s, 15)
text3s.s = GetGadgetText(7)
ergebnis3s.s = LSet(text3s.s, 25)
textgesamts.s = ergebnis1s.s+ergebnis2s.s+ergebnis3s.s ;zusammenlegen von den Feldern ( Gesamttext )
If OpenFile(1,"C:\versuch.txt")
laengew.w= Lof(1) ; ermitteln der Dateilaenge
FileSeek(1,laengew.w) ; setzt den Zeiger ans Dateiende
WriteStringN(1,textgesamts.s) ;schreibt den Gesamttext an das Ende von der Datei
CloseFile(1) ;schließt die Datei
EndIf
SetGadgetText(3, "") ;Eingabefelder werden gelöscht nachdem der
SetGadgetText(5, "") ;"Daten hinzufügen" BUTTON gedrückt wurde
SetGadgetText(7, "")
EndIf
If EventGadget()=9
Quit = 1
EndIf
EndIf
Until Quit=1
EndIf
End