![]() |
Benötige Stream-Hilfe
Hallo,
ich bin echt voll am verzweifeln! Ich möchte gern 2 Inhalte einer ListBox, also zwei Daten vom Typ TStrings, in einer Datei speichern. Nun hatte ich die Idee, dass über Streams zu machen: a) Ich weiß net ob das überhaupt geht a.1) Ich hab's net hinbekommen b) Ich hab mir schon zig Tuts durchgelesen, aber bin nie so wirklich dahinter gestiegen, wie ich da jetzt anstellen soll. War ich da mit Streams auf einem völlig falschem Weg? Wie würdet ihr es denn machen? Also nochmal: 2 TStrings in eine Datei speichern genauso wie lesen. |
Re: Benötige Stream-Hilfe
ich würds so machen
Delphi-Quellcode:
hab selber bisher nur mit savetofile/loadfromfile gearbeitet...
data:Tstrings;
begin data.loadfromfile('text.txt'); //oder data.loadfromstream('text.txt'); //dasselbe mit saveto |
Re: Benötige Stream-Hilfe
Ich hab aber 2 Daten!!!
ListBox1 und ListBox2: Und ich muss die beide in einer Datei speichern! Da nützt mir SaveToFile nicht viel! |
Re: Benötige Stream-Hilfe
könntest ja ( unschöne lösung ) beide texte mit irgend welchen sonderzeichen trennen und so abspeichern und beim laden wieder auseinander splitten über das trennzeichen ( gibts entsprechende codebollen )
oder halt n binäres format irgendwie ( zu beginn definieren wo in der datei welcher abschnitt steckt per filepointer / integer mitgespeichert als "header" ) |
Re: Benötige Stream-Hilfe
Oder du nimmst eine Ini-Datei, wo du das in den verschiedenen schlüsseln abspeicherst. Das ist aber nur zu empfehlen, wenn dein Text nicht allzu lang ist.
|
Re: Benötige Stream-Hilfe
soweit ich noch weis kann man in eine ini keine texte mit enterzeichen ( #13#10 ?! ) saven weil dann nur bis zum ersten zeilenumbruch alles gelesen werden kann.. der rest is in der ini(verloren);
allerdings könnte man natürlich die #13 durch was anderes ersetzen vor dem saven und umgekehrt |
Re: Benötige Stream-Hilfe
Was dann aber auch wieder unschön wäre. Man könnte natürlich auch eine XML-Datei nehmen, da könnte man dann alles damit machen. Fragt sich bloß, ob eine XML-Datei gerechtfertigt wäre. (Nicht dass es ein kleines Tic-Tac-Toe-Spiel ist, und dann die Highscores oder die Einstellungen darin gespeichert werden sollen). Das wäre dann eben etwas übertrieben *g*.
|
Re: Benötige Stream-Hilfe
jep lol
xml is halt der große bruder von der trennzeichen methode *g* daniel.. nimm doch einfach ORACLE datenbank lmao !!! |
Re: Benötige Stream-Hilfe
Nimm dir eine Stringliste. Schreib in die erste Zeile die Anzahl der Einträge der ersten Listbox, dann in einer Schleife selbige Einträge. Dann schreibst du direkt dahinter die Anzahl der Einträge der zweiten Listbox und dann wieder in einer Schleife die Einträge selber.
Einlesen geht genau anders rum. ;) |
Re: Benötige Stream-Hilfe
Moin Luckie,
statt einer Schleife müsste das auch mit AddStrings gehen. |
Re: Benötige Stream-Hilfe
Oder so. Die Ausführung ist letztendlich nebensächlich, es geht ja erstmal nur um das Prinzip.
|
Re: Benötige Stream-Hilfe
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab' zu Luckie's Methode ein Beispiel angehängt.
Ratte |
Re: Benötige Stream-Hilfe
Das Prog funzt aber nicht einwandfrei. Beim laden der linken Box ist ein kleiner Bug drin. Beim laden werden nicht die Daten in die linken Box, die beim Speichern in der linken Box standen.
Aber egal, ich hab's jetzt anderst gelöst! |
Re: Benötige Stream-Hilfe
kannst dus nicht so machen:
eit TStrings da kommt in zeile 0 die länge der ersten ListBox dann die Items der ersten, dann die Items der zweiten abspeichern dann beim laden liest du zeile 0 aus, dann kannst du sagen also data ist mein TStrings
Delphi-Quellcode:
und fertig!
for i:=1 to strtoint(data[0]) do ListBox1.Items.Add(Data[i]);
for i:=1+strtoint(data[0]) to data.Items.Count do ListBox2.Items.Add(Data[i]); Oh, mir fällt grad auf, das luckie das schon (ähnlich) gesagt hat aber ich glaub meins ist konkrtetr und etwas besser :twisted: :-D (unwesentlich) |
Re: Benötige Stream-Hilfe
Zitat:
|
Re: Benötige Stream-Hilfe
glkbkk hat's glaub so gemeint:
[Anzahl der Items von ListBox1] [Items der Listbox1] [Items der Listbox2] Luckie so: [Anzahl der Items von ListBox1] [Items der Listbox1] [Anzahl der Items von ListBox2] [Items der Listbox2] oder nicht? |
Re: Benötige Stream-Hilfe
exakt! :thuimb:
genauso kann man sich eine zeile sparen, aber obs das bringt is natürlich fraglich... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:53 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 by Thomas Breitkreuz