Servus.
Ich würde gerne wissen, wie ich die Inhalte (Strings) von TStringList's die in einer TObjectList enthalten sind auslesen kann. (Es sei mal egal, dass sich die ObjectList in einer übergeordneten TObjectList befinden!!)
Mir ist jedoch nicht klar, wie ich an dise Inhalte der TStringList's komme.
Evt zur Info:
Mein Programm liest eine, nach einem bestimten Format geschriebene, Datei ein. Die $-Zeichen markieren einen Bereich in der Datei, ähnlich wie Überschriften. Das Programm liest nun diese und die darunter folgenden Zeilen ein, bis zum Auftreten eines weitern $-Zeichens an der ersten Position. Die einzelnen Zeilen beinhalten mehrere Einträge, durch Pipes ( |-Zeichen) getrennt. Diese einzelnen Einträge werden nun in StringListen (tsl_stylecheat) gespeichert. Diese Stringlisten werden in einer Objektliste gespeichert (tol_stylecheatDetail). Diese Objektlisten werden wiederum in einer Objektliste gespeichert (tol_StylecheatMain). Somit wollte ich eine während der Laufzeit dynamisch erweiterbare, mehrdimensionale TStringList erzeugen. Der Grund sei mal dahin gestellt, sowie die Art der Programmierung, es geht allein um das Verständnis.
So sieht z.B. die einzulesende Datei aus
Der folgende Sourcecode zeigt, wie ich das einlesen der Datei realisiert habe
Wenn man die Funktion dieses Einlesen verbildlicht, könnte es so aussehen:
Ich muss nun, wie oben beschrieben, die Inhalte der TStringList's.
Ich würde gerne wissen, wie ich die Inhalte (Strings) von TStringList's die in einer TObjectList enthalten sind auslesen kann. (Es sei mal egal, dass sich die ObjectList in einer übergeordneten TObjectList befinden!!)
Mir ist jedoch nicht klar, wie ich an dise Inhalte der TStringList's komme.
Evt zur Info:
Mein Programm liest eine, nach einem bestimten Format geschriebene, Datei ein. Die $-Zeichen markieren einen Bereich in der Datei, ähnlich wie Überschriften. Das Programm liest nun diese und die darunter folgenden Zeilen ein, bis zum Auftreten eines weitern $-Zeichens an der ersten Position. Die einzelnen Zeilen beinhalten mehrere Einträge, durch Pipes ( |-Zeichen) getrennt. Diese einzelnen Einträge werden nun in StringListen (tsl_stylecheat) gespeichert. Diese Stringlisten werden in einer Objektliste gespeichert (tol_stylecheatDetail). Diese Objektlisten werden wiederum in einer Objektliste gespeichert (tol_StylecheatMain). Somit wollte ich eine während der Laufzeit dynamisch erweiterbare, mehrdimensionale TStringList erzeugen. Der Grund sei mal dahin gestellt, sowie die Art der Programmierung, es geht allein um das Verständnis.
So sieht z.B. die einzulesende Datei aus
Code:
$0 $1 $2 aaa|1|0|FFFFFF|000000|1| bbb|1|0|FFFFFF|000000|0| $3 aaa|1|1|FFFFFF|000000|1| bbb|1|1|FFFFFF|000000|1| ddd|1|1|FFFFFF|000000|1| $4 $5 aaa|1|1|FFFFFF|000000|0| $6 $7 aaa|0|1|FFFFFF|000000|0| bbb|0|1|FFFFFF|000000|0|
Code:
[...] #define Filename ExtractFilePath(ParamStr(0)) + "testdatei.txt" [...] TObjectList *tol_StylecheatMain = new TObjectList(); TObjectList *tol_StylecheatDetail = new TObjectList(); TStringList *tsl_Stylecheat = new TStringList(); int position = 0; AnsiString ListMark = "$"; AnsiString Line = ""; if(FileExists(Filename)) { tsl_StylecheatFile->LoadFromFile(Filename); for(int index = 0;index < tsl_StylecheatFile->Count;index ++) { Line = tsl_StylecheatFile->Strings[index]; if(Line.SubString(1,1) == ListMark) { tol_StylecheatDetail = new TObjectList(); tol_StylecheatMain->Add(tol_StylecheatDetail); } else { tsl_Stylecheat = new TStringList(); position = Line.AnsiPos("|") + 1; Line = Line.SubString(position,Line.Length()); //tsl_Stylecheat->Add(Line); for(int x = 0;x < 5;x ++) { position = Line.AnsiPos("|") + 1; Line = Line.SubString(position,Line.Length()); tsl_Stylecheat->Add(Line); } tol_StylecheatDetail->Add(tsl_Stylecheat); } } } [...]
Code:
- $0 // (Neue TObjectListMain: tol_StylecheatMain) - $1 - $2 - // (Neue TObjectListDetail: tol_StylecheatDetail) - aaa // (Neue TStringList: tsl_Stylecheat) - 1 - 0 - FFFFFF - 000000 - 1 - - bbb - 1 - 0 - FFFFFF - 000000 - 0 - $3 - - aaa - 1 - 1 - FFFFFF - 000000 - 1 - - bbb - 1 - 1 - FFFFFF - 000000 - 1 - - ddd - 1 - 1 - FFFFFF - 000000 - 1 - $4 - $5 - - aaa - 1 - 1 - FFFFFF - 000000 - 0 - $6 - $7 - - aaa - 0 - 1 - FFFFFF - 000000 - 0 - - bbb - 0 - 1 - FFFFFF - 000000 - 0
Comment