AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schleifenabbruch durch Esc Taste...

Ein Thema von Codix32 · begonnen am 1. Nov 2014 · letzter Beitrag vom 9. Nov 2014
 
Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#9

AW: Schleifenabbruch durch Esc Taste...

  Alt 5. Nov 2014, 23:15
Keine Ahnung, was bei dir los ist, aber bei mir funktioniert dein Code. Ich würde in jedem Fall in die Schleife ein Sleep einbauen, damit andere Threads und Prozesse Zeit bekommen und dein Thread nicht die CPU voll auslastet. Ein Sleep(1); reicht da schon aus. Warum überhaupt eine for-Schleife mit einem hohen Zahlenwert als Abbruchbedingung statt einer while- oder repeat-until-Schleife?

MfG Dalai
Vielen lieben Dank Dalai,

das Sleep(1) sorgt tatsächlich dafür, dass ich nach dem Klick auf ESC das Formular schließen kann.

Ich habe das Sleep einfach mal so eingefügt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
begin
  ResetEscPressed;
   for i := 0 to 10000000 do
    begin
     Application.ProcessMessages;
     Caption := inttostr(i);
     Sleep(1); //<- Sleep in der Schleife
     if EscPressed('Schleife abbrechen ?') then break;
    end; //For
    Label1.Caption:= 'stop';
    Application.ProcessMessages;
    Button1.Enabled:=false;
end; //proc
Was ich gern verstehen würde, warum das so funktioniert, denn:

Denn auch ohne Sleep zeigt das Label1 sofort 'Stop' an,wenn ich ESC drücke, das heißt doch, dass die Schleife auch verlassen ist. Warum brauche ich jetzt das Sleep um das Form schließen zu können? Was passiert da noch im Hintergrund? Und ich wäre jetzt nicht darauf gekommen da ein Sleep einzubauen.
Und warum nun eine 4Kern CPU von einer Form.exe total eingenommen wird, wenn da
ein GetAsyncKeyState(VK_ESCAPE) in einer Schleife drin ist, verstehe ich ebenfalls nicht.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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