Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

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

  Alt 9. Feb 2019, 20:14
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.
  Mit Zitat antworten Zitat