![]() |
Schleife per Tastendruck unterbrechen
Mit folgender Funktion kann man lange laufende Schleifen oder Abläufe per Tastendruck unterbrechen.
Wenn man die ESC-Taste oder die Pause-Taste drückt, dann wird dem Benutzer eine Frage gestellt, die er mit Ja oder Nein beantworten kann. Bei Ja wird abgebrochen, bei Nein läuft das Programm weiter.
Delphi-Quellcode:
Beispiel 1 zur Anwendung:
function EscPressed(const Msg:string):Boolean;
begin // Aus der WinAPI-Doku zu GetAsyncKeyState: // if the function succeeds, the return value specifies whether the key was pressed // since the last call to GetAsyncKeyState, and whether the key is currently up or down. // If the most significant bit is set, the key is down, and if the least significant bit is set, // the key was pressed after the previous call to GetAsyncKeyState. // The return value is zero if a window in another thread or process currently has the keyboard focus Result := ((GetAsyncKeyState(VK_ESCAPE) and $8001) <> 0) or ((GetAsyncKeyState(VK_PAUSE) and $8001) <> 0); if Result then begin Result := (Dialogs.MessageDlg(Msg, mtConfirmation, [mbYes,mbNo], 0) = mrYes); end; end; // muss vor dem Benutzen von EscPressed() aufgerufen werden procedure ResetEscPressed; begin GetAsyncKeyState(VK_ESCAPE); GetAsyncKeyState(VK_PAUSE); end;
Delphi-Quellcode:
Beispiel 2:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer; begin ResetEscPressed; for i := 0 to 10000000 do begin Caption := inttostr(i); if EscPressed('Schleife abbrechen ?') then Break; end; end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin ResetEscPressed; BerechneSteuerVorteil1; if EscPressed('Berechnung der Nachsteuer abbrechen ?') then Abort; // stille Exception auslösen, damit man auch aus tief geschachtelten Funktionen rauskommt BerechneNachsteuer; if EscPressed('Berechnung Zinsausfall abbrechen ?') then Abort; BerechneZinsausfall; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz