Wenn es Dir darauf ankommt, ob der Suchbegriff
überhaupt, und die genau Anzahl der Vorkommnisse uninteressant ist,
müssen ja nicht alle Zellen untersucht werden. Jedenfalls verstehe ich Dein Anliegen so.
In diesem Fall wäre eine Möglichkeit, die Schleifen zu verlassen, sobald der Suchbegriff einmal gefunden wurde.
Eine Möglichkeit, wäre in diesem Fall (zwei for Schleifen hintereinander) wohl die Einführung einer Variable.
Delphi-Quellcode:
procedure TFrKundenliste.cmdSucheClick(Sender: TObject);
Var i,k : Integer;
Suchbegriff : String; //<----- wo wird diese Variable mit Leben gefüllt?
gefunden : Boolean;//<-------- Variable zur Erkennung, ob Suchbegriff gefunden wurde
begin
gefunden := False; //<------ Am Anfang auf False setzen, also nichts gefunden
for i:=0 to Kundenliste.colcount-1 do
begin
for k:=1 to Kundenliste.rowcount-1 do
begin
if Kundenliste.Cells[i, k]=Suchbegriff then //<-- Reihenfolge getauscht
begin
ShowMessage('Gefunden!');
gefunden := True; //<-- Die Suche hat einen Treffer ergeben
Break; //<-- Break verlässt die for-Schleife
end
end;
//wenn die innere for Schleife verlassen wurde, sind wir aber immer noch in der äußeren
//die wir ebenfalls verlassen müssen. Zur Erkennung, wann wir die Schleife verlassen sollen
//dient in diesem Fall die Variable gefunden"
if gefunden then
Break; //verlässt auch die äußere Schleife
end;
//wenn man hier ankommt, ist folgendes eingetreten:
//- Entweder, der Suchbegriff wurde gefunden (gefunden = True) und die Schleife vorzeitig verlassen
//- oder die Suche hat keinen Treffer ergeben (gefunden = False) und alle Zellen wurden durchsucht
if not gefunden then //Ausgabe nur einmal ganz am Schluß, dass der Suchbegriff nicht auftaucht
ShowMessage('Pech gehabt');
end;
Es gibt mit Sicherheit schönere / einfachere Varianten als die, die ich hier vorgestellt habe
Eigentlich dürfte Dein Program sich nicht aufhängen.
[edit] Ich sehe gerade, Du hast Col und Row in
Cells[k,i]
vertauscht, das sollte mEn
Cells[i, k]
heißen.
So kann es schnell sein, dass Du auf einen Index zuzugreifen versucht, der gar nicht existiert, und dann ist es kein Wunder, wenn Dein Programm lustige Sachen macht
P.S. Du hast immer noch nicht die Variable Suchbegriff" mit Leben gefüllt