Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - bestimme Zeilen aus TStringList löschen
CodeRed - Do 31.03.05 14:20
Titel: bestimme Zeilen aus TStringList löschen
Hi!
Ich hab wieder ein Mal ein Problem...
Und zwar hab ich eine StringList mit vielen Zeilen. Nun möchte ich darin jede Zeile, die nicht mit einer Zahl (1,2,..,0) beginnt löschen. Ich hoffe es gibt dafür eine Lösung.
Da ich sehr unerfahren mit der StringList bin wäre es super, wenn ihr mir vielleicht n paar Zeilen aufschreiben könntet.
Thx!!
AXMD - Do 31.03.05 14:28
Du durchsuchst die Stringliste vom letzten Item bishin zum ersten und löschst dann mit der Methode Delete(i) (wobei i deine Laufvariable ist) all jene Einträge, die mit einer Zahl beginnen (musst du mit einem if abfragen). Mehr zu den Methoden findest du in der Delphihilfe
AXMD
Sprint - Do 31.03.05 14:32
Delphi-Quelltext
1: 2: 3: 4: 5:
| for I := MyStringList.Count - 1 downto 0 do if Length(MyStringList.Strings[I]) > 0 then case MyStringList.Strings[I][1] of '0'..'9': MyStringList.Delete(I); end; |
Edit: \\ Hatte deine Frage falsch gelesen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| for I := MyStringList.Count - 1 downto 0 do if Length(MyStringList.Strings[I]) > 0 then case MyStringList.Strings[I][1] of '0'..'9':; else MyStringList.Delete(I); end; |
CodeRed - Do 31.03.05 16:41
ok, das hat funktioniert!!
gibt es auch ne möglichkeit leere zeilen zu löschen??
ich hab's mit
if Length(MyStringList.Strings[i]) = 0 then MyStringList.Delete(i);
versucht, doch da bekomm ich eine fehlermeldung.
jasocul - Do 31.03.05 16:45
CodeRed hat folgendes geschrieben: |
versucht, doch da bekomm ich eine fehlermeldung. |
Welche?
Bitte immer dran denken, die Meldung mit aufzuschreiben.
CodeRed - Do 31.03.05 17:05
wollte ich gerade noch editieren, dann ist mir's laptop abgestürzt :)
und jetzt warst du schon schneller
also hier ist die Meldung: "Im Projekt Projekt1.exe ist eine Exception der Klasse EStringListError aufgetreten. Meldung: 'Listenindex überschreitet das Maximum (232)'. Prozess wurde angehalten..."
diese meldung kommt allerdings nur, wenn ich die leeren zeilen auch noch löschen will. wenn ich die lösung von Sprint alleine hab funktioniert alles!!
Sprint - Do 31.03.05 17:19
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| for I := MyStringList.Count - 1 downto 0 do if Length(MyStringList.Strings[I]) > 0 then begin case MyStringList.Strings[I][1] of '0'..'9':; else MyStringList.Delete(I); end; end else MyStringList.Delete(I); |
CodeRed - Do 31.03.05 17:42
wie blind man doch sein kann ^^
naja, jetzt geht wenigstens alles!!
Thx
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!