Delphi-PRAXiS
Seite 2 von 2     12   

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 16:01

Re: Bestimmten Eintrag auus StringList löschen
 
Zitat:

Zitat von marabu
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

das sieht gut aus aber es geht nicht, obwohl ich die fehlende klammer hinter sametext da gemacht hab es gibt folgende fehler:
Delphi-Quellcode:
[Pascal Fehler] Unit1.pas(204): E2250 Es gibt keine überladene Version von 'SameText', die man mit diesen Argumenten aufrufen kann
[Pascal Fehler] Unit1.pas(204): E2010 Inkompatible Typen: 'string' und 'Boolean'
[Pascal Warnung] Unit1.pas(243): W1019 FOR-Schleifenvariable muss eine einfache lokale Variable sein
[Pascal Fataler Fehler] Chat.dpr(5): F2063 Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Update:
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Var
  lLine: Integer;
Begin
  lLine := 0;
  // onlist.BeginUpdate;
  While ( lLine < onlist.Count ) Do
    If AnsiSameText(onlist[lLine],Edit2.Text) Then
    onlist.delete(lLine)
      Else Inc(lLine);
  // onlist.EndUpdate;
end;
so habs ich jetzt und es geht auch nicht, langsam glaub ich delphi mag mich nich ma
ehr ...

sirius 12. Jan 2007 16:03

Re: Bestimmten Eintrag auus StringList löschen
 
Du solltest nach dem Löschen deine Liste noch einmal speichern (savetofile).
Nur delete, löscht zwar den Eintrag im Hauptspeicher, aber nicht auf der Festplatte.

Und lass, das mal mit dem Memo, das war nur ein Beispiel von xyz, was nicht direkt in deinen Code passt


Soll das ein multiuser-Programm werden. Dann musst du für diese Datei noch ein paar Sicherheiten einbauen.

Muetze1 12. Jan 2007 16:04

Re: Bestimmten Eintrag auus StringList löschen
 
Ja, wie ich schon geschrieben hatte...

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;

ByStones2 12. Jan 2007 16:04

Re: Bestimmten Eintrag auus StringList löschen
 
es geht danke für die hilfe !!!
jaajajaja es geht !!!
:-D :-D :-D :-D :-D :-D :-D
danke !!!!!!!!!!!!11 :cheers:

marabu 12. Jan 2007 16:07

Re: Bestimmten Eintrag auus StringList löschen
 
Ich würde das mal im Debugger durchsteppen.

@Muetze1: Danke für den Hinweis - habe es schnell geändert.

sirius 12. Jan 2007 16:10

Re: Bestimmten Eintrag auus StringList löschen
 
@muetze, @marabu, @st_ett
ihr müsst nicht selber nach dem Text in einer Schleife suchen. Das erledigt das Objekt für euch mit dem property indexof

Muetze1 12. Jan 2007 16:18

Re: Bestimmten Eintrag auus StringList löschen
 
@sirius: Das ist uns klar, aber im Gegensatz zu deinem Code löschen wir alle Vorkommen des Eintrages, du nur den ersten. Auch würde dein Code eine Exception EOutOfBounds werfen, wenn der Eintrag nicht vorhanden ist.

/EDIT: IndexOf() ist eine Methode und keine Property :warn:

Klaus01 12. Jan 2007 16:20

Re: Bestimmten Eintrag auus StringList löschen
 
Zitat:

Zitat von sirius
@muetze, @marabu, @st_ett
ihr müsst nicht selber nach dem Text in einer Schleife suchen. Das erledigt das Objekt für euch mit dem property indexof

Nun, indexof findet das erste Vorkommen des Strings in der Liste.
Ich müßte dann zumindest eine Schleife laufen lassen, die abprüft ob Indexof noch etwas zurückliefert.

Und ich denke mal IndexOf wird auch nicht viel anderes machen als die
Liste per Schleife durchzugehen.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 Uhr.
Seite 2 von 2     12   

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