![]() |
Re: Problem mit LixtBox, Stringlist und Memofeld
Danke
Ich hab es vorher auch mit einer Stringlist versucht, das klappte auch solang ich den Inhalt im Programm in die Stringlist eingetragen habe und dann auch sofort ins memo übernehme, jedoch habe ich probleme diese stringlist korrekt abzuspeichern. Muss ich auf was achten wenn ich eine Stringlist, die sich in einem Record befindet, abspeichere ? Die Stringlist wird korrekt geschrieben und später auch ausgelesen, nur gespeichert wird sie falsch. Paar Schnipsel zum erklären (Variablennamen ersetzt !):
Delphi-Quellcode:
tRecord = record
name : string[30]; text : tstringlist; end; var Record : tRecord;
Delphi-Quellcode:
// So setz ich das Memo in eine Stringliste
text := TStringlist.Create; for I:=0 to zeilenanzahl do // Zeilenanzahl enthält die Anzahl der Zeilen im Memo begin Record.text.add(frmMain.memMain.lines[I]); end;
Delphi-Quellcode:
Wie gesagt - Innerhalb des Prgramms funktioniert es super, nur wenn ich die vorher abgespeicherte Datei lade scheint die Stringlist leer zu sein.
procedure SaveRecord;
var I:integer; Fle : file of tRecord; begin assignfile(Fle,filename); rewrite(Fle); for I:=1 to N do // N = Recordanzahl begin write(Fle,Record[I]); end; closefile(Fle); end; Auch in der datei selber finde ich keinen Inhalt der Stringlist. (Der Rest des Records wird richtig abgespeichert und auch gelesen) Ich nehme an, dass ich die Stringliste anders abepseichern muss ? |
Re: Problem mit LixtBox, Stringlist und Memofeld
Du darfst nicht die Stringliste an sich abspeichern (das ist nur ein Zeiger auf deren Instanz), sondern deren Inhalt. Das dürfte in einem Record aber schwierig werden.
|
Re: Problem mit LixtBox, Stringlist und Memofeld
Und wie könnte ich das Problem lösen ? :/
|
Re: Problem mit LixtBox, Stringlist und Memofeld
Hallo zusammen,
müsste das mit dem Speichern nicht so gehen...
Delphi-Quellcode:
Gruss Jens
Text := TStringList.Create;
... Text.SaveToFile('.\MeinRecord'); Text.Free; |
Re: Problem mit LixtBox, Stringlist und Memofeld
@Jens, ich möchte gerne den Record speichern, und nicht nur eine Stringlist :)
Die Stringlist befindet sich in diesem Record. Mit dienem Code speichere ich nur die Stringliste. |
Re: Problem mit LixtBox, Stringlist und Memofeld
So in etwa. Du könntest dann noch den Namen (ist ja auch nur ein String) beim Speichern in die erste oder letzte Zeile der Stringlist schreiben, dann kannst Du sie nach dem Auslesen auch wieder zuordnen.
|
Re: Problem mit LixtBox, Stringlist und Memofeld
Mein Record enthält im meinem Code viel mehr Inhalt, ich habe es nur im vorigen Code auf die beiden beschränkt, um den Fall etwas besser erkärne zu können. :)
|
Re: Problem mit LixtBox, Stringlist und Memofeld
Dann bliebe noch die Möglichkeit, die Stringliste wie von Jens gezeigt in einer Datei abzuspeichern und den Dateinamen als ShortString im Record abzulegen. Der Dateiname darf dann aber 255 Zeichen nicht überschreiten, zur Not müsstest Du ihn mit GetShortPathName in das alte DOS-Format bringen.
|
Re: Problem mit LixtBox, Stringlist und Memofeld
Gegen die Lösung habe ich ncihts einzuwenden, aber das Problem könnte werden, dass später im Ordner zu viele Dateien sind :S
Es werden nähmlich recht viele Memo Felder gespeichert. Sollte es keine andere Lösung geben, werd ich darauf zurückgreifen. Wäre aber froh wenn es dennoch eine andere Möglichkeit gäbe :) |
Re: Problem mit LixtBox, Stringlist und Memofeld
Oder, je nach Art des Records, den Record durchlaufen und in eine eigene Stringliste schreiben und anschließend diese StringList z.B. speichern.
Oder, du musst den Record in einen DB schreiben. Gruß Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz