ListBox überprüfen (DRINGEND!)

Wieso klappt das nicht?:

try
for c := 0 to ListBox2.Items.Count do If ListBox2.Items[c] ges then begin ListBox2.Items.Add(ges); goto 2; end;
2:
except
beep;
end;

ges ist string. es wird überprüft ob ges schon in der listbox ist, wenn nicht, dann hinzufügen…

CHRISTIAN.

hi,

> try  
> for c := 0 to ListBox2.Items.Count do If ListBox2.Items[c]  
> ges then begin ListBox2.Items.Add(ges); goto 2; end;  
> 2:  
> except  
> beep;  
> end;

erstmal ist der index Count um eins zu groß -> zählung ab 0.
weiter vermute ich mal, daß du viel zu viele einträge kriegst. denn du mußt dir merken, ob ges _irgendwo_ in der lb steht. du prüfst aber nur einzelne zeilen:
steht ges an x = 4, so wird ges jedesmal von x = 0 bis x = 3 eingefügt, da Items[x] ges!

versuchs mal so:

var Treffer: Boolean;
begin
 Treffer := False;
 for c := 0 to ListBox2.Items.Count-1 do
 if ListBox2.Items[c] = ges then begin
 Treffer := True; // hier merkst du dir den Treffer
 Exit; // die Schleife muß nicht mehr weiterlaufen
 end;
 if not Treffer then ListBox2.Items.Add(ges)
 else Beep;

damit fügst du ges am ender der lb an, wenn er noch nicht vorhanden ist.

ich hoffe, es hilft
CU, DiJey

Hi Christian,
dafür gibt es in Delphi eine ganz einfache Methode:

if Listbox2.Items.IndexOf(ges) = -1 then
 ListBox2.Items.Add(ges);

Gruss Thomas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]