Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#4

Re: Prozedur nach bestimmter Zeit abbrechen

  Alt 28. Dez 2008, 13:31
Zunächst einmal solltest du der Ästhetik wegen folgendes schreiben:

Delphi-Quellcode:
function Zeitueberschreitung: Boolean;
begin
  result := (t + EncodeTime(0, 0, 10, 0) < now);
end;
Dann kannst du das in der Schleife folgendermaßen verwenden:

Delphi-Quellcode:
begin
  try
    for i:= 0 to 100 do
      for j:= 0 to 100 do
        begin
          if Zeitueberschreitung then Exit; // Dies verzögert die Gesamtbearbeitung allerdings etwas...
          { ... }
        end;
  finally
    { Hier muss der Code zum Aufräumen hin. Der wird auch bei einem Exit ausgeführt. }
  end;
end;
Ein einfaches Break würde hier nur in der äußeren Schleife funktionieren, in der inneren würde es auch nur genau diese abbrechen, die äußere liefe aber weiter:

Delphi-Quellcode:
for i:= 0 to 100 do begin
  if Zeitueberschreitung then Break;
  for j:= 0 to 100 do
    begin
      { ... }
    end;
end;
Dieser Ansatz ist dann vorzuziehen, wenn die innere Schleife nicht allzuviel Zeit braucht, da sonst sehr häufig die Funktion Now aufgerufen wird.
Uwe Raabe
  Mit Zitat antworten Zitat