Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Inhaltsvergleich einer Listbox (https://www.delphipraxis.net/89404-inhaltsvergleich-einer-listbox.html)

Ajin 30. Mär 2007 14:47


Inhaltsvergleich einer Listbox
 
Huhu DP!

Ich habe eine Listbox auf meiner Form. Ich lese einen String aus und möchte wissen, ob dieser String bereits in meiner Listbox vorkommt. Eigentlich geht das doch so:

Delphi-Quellcode:
 //Prüfen ob er in der Liste ist..
if Fliste.meineliste.items.indexof(meinstring) = -1 then
    begin
     //String ist nicht in der Listbox
    end
    else begin
          //String wurde in Listbox gefunden
         end;
Das klappt komischerweise aber nicht. Ist da was falsch?

mkinzler 30. Mär 2007 15:08

Re: Inhaltsvergleich einer Listbox
 
Die Strings müssen ja vollständig übereinstimmen (Groß-Kleinschreibung, Leerzeichen) versuchs mal mit Trim(), UpperCase() o,ä.

Muehle 30. Mär 2007 15:12

Re: Inhaltsvergleich einer Listbox
 
Müsste eigentlich gehen , habs gerade ausprobiert. Bekomme -1 zurueck, wenn Delphi nichts findet.

self.LstStartedProcesses.items.indexof('Suchtext') ; // -das funktioniert bei mir

Hast du wirklich eine Listbox ??
Vielleicht Groß/Kleinschreibung ??
Zudem hast du vor Items 2 Objekte stehen ??

Ajin 2. Apr 2007 15:12

Re: Inhaltsvergleich einer Listbox
 
Hi,

Ich hab das ganze nochmal geprüft, das Ergebnis ist immer negativ. Hier der simple Code:

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var s: String;
begin
 //lade den ersten namen aus der Liste
         if fileexists('C:\liste1.txt') then
          begin
           liste1.Items.LoadFromFile('C:\liste1.txt');
           s:=liste1.items[0]; //den ersten Eintrag auswählen
         end;
 //vergleichen mit dem inhalt der anderen liste
  if fileexists('C:\napliste.txt') then napliste.Items.LoadFromFile('C:\napliste.txt');
  if napliste.items.indexof(s) = -1 then showmessage(s+' ist nicht in Liste 2')
  else showmessage(s+' ist in Liste 2 Juchuu');
End;
Ihr könnt es gern mal testen aber angeblich ist der string immer in der liste 2 :(

marabu 2. Apr 2007 16:40

Re: Inhaltsvergleich einer Listbox
 
Hallo Jaimy,

wenn du deinen Code etwas erweiterst, dann kommst du der Fehlerursache vielleicht selbst auf die Spur:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
const
  FN_LISTE1 = 'C:\Liste1.txt';
  FN_NAPLISTE = 'C:\napliste.txt';
var
  s: string;
begin
  //  lade den ersten namen aus der Liste
  if FileExists(FN_LISTE1) then
  begin
    Liste1.Items.LoadFromFile(FN_LISTE1);
    if Liste1.Count > 0 then
    begin
      //  den ersten Eintrag auswählen
      s := Liste1.Items[0];
      //  vergleichen mit dem inhalt der anderen liste
      if FileExists(FN_NAPLISTE) then
      begin
        napListe.Items.LoadFromFile(FN_NAPLISTE);
        if napListe.Items.IndexOf(s) < 0
          then ShowMessage(Format('"%s" nicht in NapListe', [s]))
          else ShowMessage(Format('"s" in NapListe gefunden', [s]));
      end else
        ShowMessage(Format('Datei "%s" nicht gefunden', [FN_NAPLISTE]));
    end else
      ShowMessage('Liste1 ist leer');
  end else
    ShowMessage(Format('Datei "%s" nicht gefunden', [FN_LISTE1]));
end;
Grüße vom marabu

Ajin 3. Apr 2007 08:28

Re: Inhaltsvergleich einer Listbox
 
Der marabu liegt wieder völlig richtig, da war ich wohl zu ungenau. Ich werde zukünftig darauf achten.

Grüsse Jaimy

:dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr.

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