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.