Einzelnen Beitrag anzeigen

silver-moon-2000

Registriert seit: 18. Feb 2007
Ort: Schweinfurt
170 Beiträge
 
Delphi XE Professional
 
#4

AW: Kombinieren von Repeat- mit For-Schleifen

  Alt 8. Apr 2012, 22:53
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
Tobias
Bitte nicht hauen , ich weiß es nicht besser
  Mit Zitat antworten Zitat