Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - TreeView Items aus TXT-File


Handycommander - Sa 16.07.05 22:21
Titel: TreeView Items aus TXT-File
Hi,

ich habe eine textdatei, in der verschiedene werte untereinander eingetragen sind. in etwa so:


Delphi-Quelltext
1:
2:
3:
erste zeile
zweite zeile
dritte zeile


nun möchte ich diese werte alle in einer treeview haben. aber alle auch untereinander!
wie kann ich diese werte so auslesen, dass ich sie dann so in eine treeview speichern kann?
wie kann ich diese werte in eine treeview speichern?

danke


maxk - Sa 16.07.05 22:30

Meinst du so?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var i:integer;
begin
 with TStringList.Create do try
  LoadFromFile('Z:\Test.txt');
  for i:=0 to Count-1 do TreeView1.Items.AddChild(nil,Strings[i]);
 finally
  Free;
 end;
Das liest alle Zeilen aus einer Datei aus und schreibt sie untereinander in eine Treeview.

Gruß,
maxk


Tendl - Mi 27.07.05 13:41

Ich glaube es geht nicht nur darum alle Zeilen untereinander in eine Treeview zu schreiben, sondern auch darum unterschiedliche Verschachtelungstiefen wieder
herzustellen. Ich fertig Lösung dazu habe ich auch noch nicht gefunden. Mein Ansatz
dazu wäre z.B das Voranstellen von Zeichen um die Information zu behalten:

Ein Beispiel

Erste Zeile
.Zweite Zeile
.Dritte Zeile
..Vierte Zeile
...Fünfte Zeile
.Sechste Zeile

usw.

Die Leseroutine wertet dann die Anzahl der Punkte aus und baut danach den Tree auf.
Das Ganze läßt sich beliebig optimieren um Zeilen die mit einem Punkt beginnen
ebenfalls verarbeiten zu können, z.B muß jede Zeile mit einem bestimmten Zeichen
beginnen. Bis zu diesem Zeichen ist alles Information über die Verschachtelungstiefe

Realisiert habe ich das Ganze bisher nicht.

Hoffentlich hilft der Denkanstoß weiter.
Thomas


maxk - Mi 27.07.05 15:56

Das wird dann schon etwas schwieriger, da man die vorherigen Nodes speichern müsste. Ist aber auch nicht sooo kompiliziert. Problem hierbei wäre wirklich mehr das Speicherformat, da man hier wirklich überlegen muss, was man eigentlich machen will. Ein Sonderzeichen wie #0 sollte aber für einen Text in einer Treeview sehr gut funktionieren. Fände ich auch besser als Punkte, da #0 eigentlich in Controls nicht vorkommen dürfte.

Gruß,
maxk


Lannes - Mi 27.07.05 17:50

Hallo,

wenn es nur darum geht die Zeilen aus der Textdatei untereinander darzustellen,
kann man das direkt mit:

Delphi-Quelltext
1:
TreeView1.LoadFromFile('C:\Temp\xxxx.txt');                    

aus der TXT-Datei laden.
Speichern entsprechend mit:

Delphi-Quelltext
1:
TreeView1.SaveToFile('C:\Temp\xxxx.txt');                    



user profile iconTendl hat folgendes geschrieben:
Ich glaube es geht nicht nur darum alle Zeilen untereinander in eine Treeview zu schreiben, sondern auch darum unterschiedliche Verschachtelungstiefen wieder
herzustellen. Ich fertig Lösung dazu habe ich auch noch nicht gefunden. Mein Ansatz
dazu wäre z.B das Voranstellen von Zeichen um die Information zu behalten:

Ein Beispiel

Erste Zeile
.Zweite Zeile
.Dritte Zeile
..Vierte Zeile
...Fünfte Zeile
.Sechste Zeile

usw.

Die Leseroutine wertet dann die Anzahl der Punkte aus und baut danach den Tree auf.
Das Ganze läßt sich beliebig optimieren um Zeilen die mit einem Punkt beginnen
ebenfalls verarbeiten zu können, z.B muß jede Zeile mit einem bestimmten Zeichen
beginnen. Bis zu diesem Zeichen ist alles Information über die Verschachtelungstiefe

Realisiert habe ich das Ganze bisher nicht.

Hoffentlich hilft der Denkanstoß weiter.
Thomas


Wenn man für die Punkte ein #09(Tab) einsetzt, dieses dann in eine Datei speichert und anschließend mit TreeView1.LoadFromFile in das TreeView einbaut, hat man die entsprechenden Verschachtelungstiefen.


maxk - Mi 27.07.05 21:22

Es gibt sogar LoadFromStream/SaveToStream. Und wieder etwas, was sich einfacher lösen lässt, wenn man es einfach probiert :autsch: