Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hilfe bei Stringlist.delete (https://www.delphipraxis.net/107515-hilfe-bei-stringlist-delete.html)

Franzelchen 29. Jan 2008 09:32


Hilfe bei Stringlist.delete
 
Hallo!

Ich habe ein Problem bei der Löschung von Einträgen in einer Stringlist. Die Stringlist sieht ungefähr so aus:
___________________________
Heimdal


A
S


Johann
__________________________________

Wie bekomme ich die Leerzeilen und die einzeln stehenden Buchstaben gelöscht.

Mein Ansatz ungefähr so:

For i = 0 to Stringlist-1
if length = 0 then Sringlist.delete(i)


Nach erfolgreicher Kompilierung wird Listenindex über Maximum angezeigt.
Wie kann ich das Problem lösen???
Wer hilft mir???
Danke!!

DeddyH 29. Jan 2008 09:36

Re: Hilfe bei Stringlist.delete
 
Delphi-Quellcode:
For i := Stringlist.Count -  1 downto 0 do
  if length(StringList[i]) < 2 then
    Stringlist.delete(i);

Franzelchen 29. Jan 2008 09:39

Re: Hilfe bei Stringlist.delete
 
Ich bedanke mich für die schnelle Hilfe!!

Franzelchen 29. Jan 2008 12:08

Re: Hilfe bei Stringlist.delete
 
Jetzt hab ich den Code ausprobiert. Leider erscheint nach wie vor: Listenindex über Maximum

Anbei der vollständige Code:

[procedure TForm1.Button2Click(Sender: TObject);
var
SL :TStringList;
i :Integer;
begin
SL := TStringList.Create;
SL.LoadFromFile('StringList.tmp');
For i := SL.Count-1 downto 0 do;
If Length(SL[i]) < 2 then;
SL.Delete(i);
RichEdit2.Text := SL.Text;
SL.Free;
end;]

Kann mir jemand helfen??

user0815 29. Jan 2008 12:14

Re: Hilfe bei Stringlist.delete
 
Delphi-Quellcode:
i := 0;

  if sl <> nil then
  begin
    while i < sl.Count do
    if length(trim(sl[i])) < 2
     then sl.Delete(i)
      else inc(i);
  end;

Klaus01 29. Jan 2008 12:15

Re: Hilfe bei Stringlist.delete
 
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
SL :TStringList;
i :Integer;
begin
  SL := TStringList.Create;
  SL.LoadFromFile('StringList.tmp');
  For i := SL.Count-1 downto 0 do // hier das ; gelöscht
    If Length(SL[i]) < 2 then // hier auch
     SL.Delete(i);
  RichEdit2.Text := SL.Text;
  SL.Free;
end;]
Grüße
Klaus

marabu 29. Jan 2008 12:16

Re: Hilfe bei Stringlist.delete
 
Hi,

besser so:

Delphi-Quellcode:
procedure CompactStrings(s: TStrings; maxLength: Integer = 0);
var
  i: Integer;
begin
  for i := Pred(s.Count) downto 0 do
    if Length(s[i] <= maxLength then
      s.Delete(i);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  with RichEdit do
  begin
    Lines.LoadFromFile('StringList.tmp');
    CompactStrings(Lines, 1);
  end;
end;
Grüße vom marabu

EDIT: Sorry, ich stand wohl im Abseits ...

Franzelchen 29. Jan 2008 12:22

Re: Hilfe bei Stringlist.delete
 
Das Löschen der Semikolon hinter do und then haben die Sache gerettet. :wall:

Es funktioniert fehlerfrei. Danke Klaus und allen die geholfen haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz