Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bestimmten Eintrag auus StringList löschen (https://www.delphipraxis.net/84171-bestimmten-eintrag-auus-stringlist-loeschen.html)

ByStones2 12. Jan 2007 15:13


Bestimmten Eintrag auus StringList löschen
 
Hi,
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Var
  lLine: Integer;
Begin
  lLine := 0;
  While ( lLine < onlist.Count ) Do
  If onlist.strings[lLine] = Edit2.Text Then
    Begin
      onlist.delete(lLine);
      End;
end;
Auch wenn die bedingung erfüllt ist wird der eintrag nicht gelöscht..
ich weiß leider nich warum, ich hoffe ihr könnt mir helfen???
Manchmal gibt es einen Fehler dass das Maximum überschritten werde ...

Gruß ByStones

sirius 12. Jan 2007 15:23

Re: Bestimmten Eintrag auus StringList löschen
 
Wo zählst denn du deinen Zähler hoch?

Das ganze geht auch irgendwie so:
Delphi-Quellcode:
onList.delete(onlist.indexof(edit2.text));

Edit: Schreibfehler..hab mal aus dem onLust ein onList gemacht.

ste_ett 12. Jan 2007 15:23

Re: Bestimmten Eintrag auus StringList löschen
 
Eine etwas andere Herangehensweise. :)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := Memo1.Lines.Count -1 downto 0 do
  begin
    if (Memo1.Lines[i] = Edit1.Text) then
      Memo1.Lines.Delete(i);
  end;
end;
Es werden alle Einträge gelöscht und man läuft nicht Gefahr über die Grenzen hinauszulaufen. :)

ByStones2 12. Jan 2007 15:25

Re: Bestimmten Eintrag auus StringList löschen
 
Zitat:

Zitat von sirius
Wo zählst denn du deinen Zähler hoch?

Das ganze geht auch irgendwie so:
Delphi-Quellcode:
onList.delete(onlist.indexof(edit2.text));

Edit: Schreibfehler..hab mal aus dem onLust ein onList gemacht.

naja, mein name wir beim start des programms an die onlist angehängt und soll am ende wieder gelöscht werden...
bei deinem code passiert dass was bei mir auch passiert, der name wird bei jedem start eins mehr...

sirius 12. Jan 2007 15:43

Re: Bestimmten Eintrag auus StringList löschen
 
Ich denke, das Beil liegt woanders begraben. Wird die Procedure überhaupt aufgerufen? Leg mal nen Breakpoint [F5] innerhalb dieser Prozedur!

ByStones2 12. Jan 2007 15:47

Re: Bestimmten Eintrag auus StringList löschen
 
Zitat:

Zitat von sirius
Ich denke, das Beil liegt woanders begraben. Wird die Procedure überhaupt aufgerufen? Leg mal nen Breakpoint [F5] innerhalb dieser Prozedur!

ja die prozedur wird aufgerufen ...
ich hab keinen plan wo der fehler liegt, soll ich mal den kompletten code posten ???

sirius 12. Jan 2007 15:50

Re: Bestimmten Eintrag auus StringList löschen
 
Zitat:

Zitat von ByStones2
ich hab keinen plan wo der fehler liegt, soll ich mal den kompletten code posten ???

Na so ein bisschen:
-Deklaration von onlist
-Wo wird sie created, wo aufgelöst
-Wo beschrieben und
-->alles was mit onlist so zu tun hat

ByStones2 12. Jan 2007 15:52

Re: Bestimmten Eintrag auus StringList löschen
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Size := 256;
  SetLength(Benutzername, Size);
  GetUserName(PChar(Benutzername), Size);
  SetLength(Benutzername, Size);
  if(benutzername='KatevasK') or (benutzername='HamannL') then
  close;

  Edit2.Text := BenutzerName;
  list := TStringList.Create;
  ini := tinifile.create(extractfilepath(paramstr(0))+'pfade.ini');
  pfad := ini.ReadString('pfade', 'serverpfad', '');
  Memo1.ReadOnly := true;

  onlist:=TStringList.Create;
  pfad2:=ini.ReadString('pfade','on','');
  onlist.LoadFromFile(pfad2);
  onlist.Add(benutzername);
  onlist.SaveToFile(pfad2);
  ii:=-1;
  i:=onlist.Count;
  if i=ii then
  begin
  ii:=-1;
  end;
  for i := 0 to OnList.Count -1 do ListBox1.Items.Add(OnList.Strings[i]);

end;
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  y: Integer;
begin
for y := Memo1.Lines.Count -1 downto 0 do
  begin
    if (Memo1.Lines[y] = Edit1.Text) then
      Memo1.Lines.Delete(y);
end;
end;
das is es

marabu 12. Jan 2007 15:55

Re: Bestimmten Eintrag auus StringList löschen
 
Hallo,

dein Code löscht die durch Edit2 bestimmten Zeilen nur dann, wenn sie am Anfang von onList stehen, weil du deinen index nicht anpasst.

Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Var
  lLine: Integer;
Begin
  lLine := 0;
  // onlist.BeginUpdate;
  While ( lLine < onlist.Count ) Do
    If SameText(onlist[lLine], Edit2.Text)
      Then onlist.delete(lLine)
      Else Inc(lLine);
  // onlist.EndUpdate;
end;
Getippt und nicht getestet.

Grüße vom marabu

Muetze1 12. Jan 2007 15:56

Re: Bestimmten Eintrag auus StringList löschen
 
Ja, und wo löscht du den Namen wieder aus der Liste am Ende? Du sagtest, er solle am Ende wieder rausgelöscht werden - davon sehe ich nichts. OnList und Memo1 sind unterschiedliche Dinge und zum anderen sehe ich nicht, wo du die Liste ein zweites Mal speicherst...

marabu: AnsiSameText(): Komma zwischen den beiden Argumenten vergessen umzustellen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 Uhr.
Seite 1 von 2  1 2      

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