Delphi-PRAXiS
Seite 2 von 2     12

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   VirtualStringTree bringt mich zur Weißglut. Baum anhand von Datei erstellen (https://www.delphipraxis.net/199661-virtualstringtree-bringt-mich-zur-weissglut-baum-anhand-von-datei-erstellen.html)

DieDolly 10. Feb 2019 14:58

AW: VirtualStringTree bringt mich zur Weißglut. Baum anhand von Datei erstellen
 
Danke für die Hilfe. Aber ich bin keine Delphicrack und versuche es lieber mit einfachem Code. Es bringt mir nix Code zu benutzen, den ich in 10 Jahren nicht verstehen werde.
Das müsst ihr verstehen. Ihr seid vermutlich gelernte Entwickler und macht eurer Leben lang nix anderes. Aber es gibt auch Leute wie mich die auch was anderes im Leben zu tun haben als sich
mit Code auseinanderzusetzen der komplizierter für normale Leute nicht sein könnte.

Ghostwalker 11. Feb 2019 04:40

AW: VirtualStringTree bringt mich zur Weißglut. Baum anhand von Datei erstellen
 
Zitat:

Zitat von DieDolly (Beitrag 1425161)
Ich habe eine Datei moit einem Format etwa wie dieses

HEADER|Gruppe1
-|Subitem1
--|Sub-Subitem2

HEADER|Gruppe2
HEADER|-|Gruppe3
--|Subitem1

Der Baum sollte danach etwa so aussehen

Gruppe 1
- Subitem1
-- Subitem2
Gruppe 2
- Gruppe 3
-- Subitem 1

Mir liegt jede einzelne Zeile als String vor. Die Nehme ich mit Explode auseinanider und packe alles in ein Record.

Delphi-Quellcode:
type
 TTitleParts = record
  IsHeader: Boolean;
  IsSubItemLevel1, IsSubItemLevel2: Boolean;
  Title: string;
 end;

 TitleParts.IsHeader := aTitleParts[0] = 'HEADER';
 TitleParts.IsSubItemLevel1 := aTitleParts[0] = '-';
 TitleParts.IsSubItemLevel2 := aTitleParts[0] = '--';

 if TitleParts.IsHeader or TitleParts.IsSubItemLevel1 or TitleParts.IsSubItemLevel2 then
  TitleParts.Title := aTitleParts[1];

 TitleParts.IsHeader := (not TitleParts.IsSubItemLevel1) and (not TitleParts.IsSubItemLevel2) and (TitleParts.Title <> '-');
Wie schaffe ich es jetzt daraus einen Baum zu bauen? Ich verzweifle langsam an all meinen versuchen.

Soweit komme ich
Delphi-Quellcode:
  if TitleParts.IsHeader then
    begin
     aNode := VST.AddChild(nil);
     Data := VST.GetNodeData(aNode);
     Data.Title := TitleParts.Title;

     aLastHeaderNode := aNode;
    end;

   if TitleParts.IsSubItemLevel1 then
    begin
     aNode := VST.AddChild(aLastHeaderNode);
     Data := VST.GetNodeData(aNode);
     Data.Title := TitleParts.Title;

     aLastSubLevel1Node := aNode;
    end;
Sobald ich weiter mache geht alles komplett schief.

Na so schlecht schauts doch garnet aus :)

Delphi-Quellcode:
   if TitleParts.IsSubItemLevel2 then
    begin
     aNode := VST.AddChild([B]aLastSubLevel1Node[/B]);
     Data := VST.GetNodeData(aNode);
     Data.Title := TitleParts.Title;
    end;
würde jetzt die 2. Ebene einfügen.

Kannst du dein Problem etwas genauer beschreiben ? Ein "Sobald ich weiter mache geht alles komplett schief." ist leider nicht sehr aussagekräftig, da es, grad beim VST, sehr viele Fehlerquellen gibt.

ConnorMcLeod 11. Feb 2019 09:06

AW: VirtualStringTree bringt mich zur Weißglut. Baum anhand von Datei erstellen
 
Schätze, der Punkt ist, daß das nie ein Baum werden kann, wenn es keine Informationen darüber gibt, welches Item ein Parent (oder Child) von welchem Anderen ist.
Überleg Dir einen Mechanismus, wie die Äste und Blätter in dem Baum zusammenhängen, dann springt Dir das Programmtechnische vllt schon direkt ins Auge ;-)

hoika 11. Feb 2019 13:38

AW: VirtualStringTree bringt mich zur Weißglut. Baum anhand von Datei erstellen
 
Hallo,
ich würde mir den Baum erstmal mit einfachen Daten (keine Datei), also 2 Ebenen aufbauen.
Dann 3 Ebenen, 4 Ebenen.
Dort wirst du wahrscheinlich mit immer mehr Variablen hantieren.

Und jetzt ist Zeit für den Umbau in Rekursion.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 Uhr.
Seite 2 von 2     12

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