Hallo Delphi-Freunde!
Ich hänge an (m)einem ganz spez. Problem fest, weiß nicht, wie ich Google das beibringen kann..
Die Textdatei(Bei.txt) ist wie folgt aufgebaut:
Autoteile/Autoteile24/Tip.Auto\Alex\Nollendorfplatz\Wedding/
Baumärkte/Bauhaus/Hornbach\Bohnsdorf\Gradestr/Obi/Praktiker/
So würde ich es gerne in einer TreeView sehen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Autoteile |_Autoteile24 |_Tip.Auto |_Alex |_Nollendorfülatz |_Wedding Baumärkte |_Bauhaus |_Hornbach |_Bohnsdorf |_Gradestr. |_Obi |_Praktiker |
Habe mit verschachtelten While-Schleifen versucht, das zu lösen. Klappt leider nicht 100%ig.
Das 1. Wort(bis zum 1. /) stellt immer die Rubrik dar, zB. Autoteile, dann versch. Läden, zB. Tip.Auto,
und nach jedem \ folgt der Ort des Ladens, zB. Alex. Vielleicht ist die Art der Wort-Trennungen unglücklich gewählt.
So eine Zeile aufzulösen, besonders Laden und Ort sauber zu trennen, scheint mir nicht zu gelingen.
Bisher sieht der code so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| procedure TForm1.FormCreate(Sender: TObject); var aNode: TTreeNode; f: TextFile; Bslash,slash: integer; haupt,unter,s: string; begin assignFile(f, 'D:\Delphi-Neu2\Dateien\Bei.txt'); reset(f); while not eof(f) do begin readln(f, s); slash:=pos('/',s); haupt:=copy(s,1,slash-1); aNode:=TreeView1.Items.Add(Nil, haupt); Delete(s,1,slash); while (length(s)>0) do begin Bslash:=pos('\',s); slash:=pos('/',s); -->if (slash<Bslash) then begin unter:=copy(s, 1, slash-1); TreeView1.Items.AddChild(aNode, unter); Delete(s,1,slash); end else -->if (slash>Bslash) And (Bslash>0) then begin unter:=copy(s, 1, Bslash-1); TreeView1.Items.AddChild(aNode, unter); Delete(s,1,Bslash); while (slash>Bslash) And (slash>1) do begin unter:=copy(s, 1, Bslash-1); TreeView1.Items.AddChild(aNode, unter); Delete(s,1,Bslash); Bslash:=pos('(',s); slash:=pos('/',s); end; end; end; end; closeFile(f); TreeView1.SetFocus; |
Die innere While-Schleife ist zuviel, denke ich. Vielleicht geht es viel einfacher und ich denke zu kompliziert?
Und die aufeinander folgenden If-Abfragen, gekennzeichnet mit --> habe, liefern beide das Gleiche: Bauhaus u. Hornbach.
Das hängt doch alles schief, ich denke wahrsch. in die falsche Richtung.
DANKE Euch im Voraus!!!
Gruß Uli