Autor Beitrag
Handycommander
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: Sa 16.07.05 22:21 
Hi,

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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Sa 16.07.05 22:30 
Meinst du so?
ausblenden 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

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Tendl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: 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

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mi 27.07.05 17:50 
Hallo,

wenn es nur darum geht die Zeilen aus der Textdatei untereinander darzustellen,
kann man das direkt mit:
ausblenden Delphi-Quelltext
1:
TreeView1.LoadFromFile('C:\Temp\xxxx.txt');					

aus der TXT-Datei laden.
Speichern entsprechend mit:
ausblenden 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.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: 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:

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.