Ok, die Seite ist wieder erreichbar.
Ich würde das Anzeigen des TreeTextes auch über
OOP machen.
Anstelle der "ElementIDList: array of String;" wäre eine TObjectList vermutlich besser, die einzelne Objekte vom Typ "TChapter" bzw. "TTableOfContent" aufnehmen kann. Welche da wie reinkommen, muss man über die IDs in den Frames ermitteln. Diese sind ja im Grunde dafür da, um in der mp3-Datei eine Baumstruktur der Inhalts-Elemente nachzubilden.
D.h. beim Auslesen packst du die einzelnen Frames erstmal in eine Liste. Bevor du damit dann arbeitest, baust du anhand der ElementIDs die Baumstruktur nach.
Um den TreeText bei einem TChapter zu bekommen, gibst du einfach die ElementID oder den Inhalt der optional enthaltenen Subframes aus. Das geht über eine Property mit einem schönen Getter, der ermittelt, was zum Ausgeben vorhanden ist.
Bei einem TTableOfContent wäre das in etwa sowas:
Delphi-Quellcode:
for i := 0 to self.ElementIDList.Count - 1 do
begin
result := result + ElementIDList[i].TreeText + #13#10; //
end;
Um den Text eines TOC auszugeben, wird einfach der Reihe nach der Text der Unterelemente ausgegeben. Eventuell bei der Methode TreeText noch einen Parameter einführen, der die Tiefe der Einrückung für den Text angibt. Für die Anzeige des Inhaltsverzeichnis muss du dann nur WuzelElement.TreeText aufrufen, den Rest machen die Unter-Objekte dann von alleine.
Ist jetzt nicht alles bis ins Detail erläutert, aber die Idee sollte klar werden, denke ich. Bau da eine
OOP-Struktur auf, dann klappt das auch.
The angels have the phone box.