Autor Beitrag
CodeRed
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win 2000
D7 Pers
BeitragVerfasst: Do 31.03.05 14:20 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Do 31.03.05 14:32 
ausblenden 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][1of
        '0'..'9': MyStringList.Delete(I);
      end;



Edit: \\ Hatte deine Frage falsch gelesen:
ausblenden 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][1of
        '0'..'9':;
      else
        MyStringList.Delete(I);
      end;

_________________
Ciao, Sprint.
CodeRed Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win 2000
D7 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 31.03.05 16:45 
user profile iconCodeRed hat folgendes geschrieben:
versucht, doch da bekomm ich eine fehlermeldung.

Welche?
Bitte immer dran denken, die Meldung mit aufzuschreiben.
CodeRed Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win 2000
D7 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Do 31.03.05 17:19 
ausblenden 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][1of
        '0'..'9':;
      else
        MyStringList.Delete(I);
      end;
    end else
      MyStringList.Delete(I);

_________________
Ciao, Sprint.
CodeRed Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win 2000
D7 Pers
BeitragVerfasst: Do 31.03.05 17:42 
wie blind man doch sein kann ^^

naja, jetzt geht wenigstens alles!!

Thx