Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Benötige Stream-Hilfe (https://www.delphipraxis.net/22240-benoetige-stream-hilfe.html)

daniel8520 14. Mai 2004 22:36


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.

glkgereon 14. Mai 2004 22:39

Re: Benötige Stream-Hilfe
 
ich würds so machen

Delphi-Quellcode:
data:Tstrings;
begin
data.loadfromfile('text.txt');
//oder
data.loadfromstream('text.txt');

//dasselbe mit saveto
hab selber bisher nur mit savetofile/loadfromfile gearbeitet...

daniel8520 14. Mai 2004 22:42

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!

supermuckl 14. Mai 2004 22:53

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" )

Ultimator 14. Mai 2004 22:58

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.

supermuckl 14. Mai 2004 23:04

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

Ultimator 14. Mai 2004 23:08

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

supermuckl 14. Mai 2004 23:17

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 !!!

Luckie 14. Mai 2004 23:44

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. ;)

Christian Seehase 14. Mai 2004 23:50

Re: Benötige Stream-Hilfe
 
Moin Luckie,

statt einer Schleife müsste das auch mit AddStrings gehen.

Luckie 14. Mai 2004 23:53

Re: Benötige Stream-Hilfe
 
Oder so. Die Ausführung ist letztendlich nebensächlich, es geht ja erstmal nur um das Prinzip.

Ratte 16. Mai 2004 14:00

Re: Benötige Stream-Hilfe
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab' zu Luckie's Methode ein Beispiel angehängt.

Ratte

daniel8520 17. Mai 2004 14:09

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!

glkgereon 17. Mai 2004 20:28

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:
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]);
und fertig!

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)

Luckie 17. Mai 2004 20:30

Re: Benötige Stream-Hilfe
 
Zitat:

Zitat von glkbkk
kannst dus nicht so machen:

Was habe ich anderes geschrieben? :roll:

toms 17. Mai 2004 20:33

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?

glkgereon 19. Mai 2004 06:17

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 15:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz