AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein while schleife all 10 interationen mit einer Pause (asu TIMER)
Thema durchsuchen
Ansicht
Themen-Optionen

while schleife all 10 interationen mit einer Pause (asu TIMER)

Ein Thema von wschrabi · begonnen am 27. Jul 2020 · letzter Beitrag vom 28. Jul 2020
Antwort Antwort
Seite 2 von 2     12   
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#11

AW: while schleife all 10 interationen mit einer Pause (asu TIMER)

  Alt 27. Jul 2020, 12:39
Zitat:
Abgesehen davon, Sleep() friert den Prozess/das Programm ein.
Nein, tut es nicht (mehr)
Also wenn ich folgenden Code in 10.4 rein kopiere, hängt meine Anwendung. Bin über die Aussage auch verwundert?!

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  T : LongWord;
begin
  T := GetTickCount; // oder eine andere Zeitfunktion
  while True do
  begin
    if Integer(GetTickCount - T) > 10 * 1000 then
    begin // Integer wegen eventuellem Überlauf, wenn der Rechner mehr als 48 Tage läuft
      T := GetTickCount;
      Sleep(10 * 1000);
    end;
  end;
end;
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#12

AW: while schleife all 10 interationen mit einer Pause (asu TIMER)

  Alt 27. Jul 2020, 13:38
Eigentlich würde ich gern mal nachsehn ob/was die mit dem Sleep da grade für ein Verbrechen begehen ... wenn ich's mal schaffe 10.4 installiert zu bekommen.

Weil wenn die wirklich da Sleep durch Hier im Forum suchenDelay ersetzen würden, dann wäre das grob fahrlässig.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (27. Jul 2020 um 13:41 Uhr)
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#13

AW: while schleife all 10 interationen mit einer Pause (asu TIMER)

  Alt 27. Jul 2020, 13:49
Das sagt die 10.4 Hilfe:

Delay program execution for a specified number of milliseconds.

Sleep pauses program executions as specified by the milliseconds parameter. Under Windows, Sleep is just a link to the Sleep function in the API system

Wer traut aber schon der Hilfe
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: while schleife all 10 interationen mit einer Pause (asu TIMER)

  Alt 27. Jul 2020, 15:50
Ich habe nochmal in meinen Archiven geforstet nach einem Sleep() Ersatz ohne das der MainThread dabei einfriert und bin auf diese Perle gestoßen:
Delphi-Quellcode:
procedure Delay(Milliseconds: Integer);
  {by Hagen Reddmann}
var
  Tick: DWORD;
  Event: THandle;
begin
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickCount + DWORD(Milliseconds);
    while (Milliseconds > 0) and
      (MsgWaitForMultipleObjects(1, Event, False, Milliseconds,
      QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      Application.ProcessMessages;
      Milliseconds := Tick - GetTickCount;
    end;
  finally
    CloseHandle(Event);
  end;
end;
In Verbindung mit Delphi Timer bzw Iterations-Zähler sollte das Thema erfolgreich gelöst sein, hoffe ich jedenfalls
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: while schleife all 10 interationen mit einer Pause (asu TIMER)

  Alt 27. Jul 2020, 16:44
Zitat:
Abgesehen davon, Sleep() friert den Prozess/das Programm ein.
Nein, tut es nicht (mehr)
Hast du dazu ein Beispiel zu "Nein, tut es nicht (mehr)"? Wenn ich in
Delphi-Quellcode:
procedure TForm36.Button1Click(Sender: TObject);
begin
  sleep( 60000 );
end;
meinen Button1 klicke, dann schläft mein Hauptthread während 60 Sekunden (Form reagiert nicht mehr auf Mausklicks etc.) - wenn ich im Windows Task Manager nachsehe, dann steht dort sehr kurz nach dem Button1-Klick "Keine Rückmeldung".

Das war bis jetzt doch in jedem Delphi und jedem Windows so (?).

Rasch gecheckt mit Delphi 10.4 und Microsoft Windows [Version 10.0.19042.421].

Winapi.Windows:
procedure Sleep; external kernel32 name 'Sleep';
Michael Gasser
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: while schleife all 10 interationen mit einer Pause (asu TIMER)

  Alt 28. Jul 2020, 08:26
Ich denke mal das war ein Missverständnis das mkinzler meine Aussage dementierte.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   

 

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 04:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz