AGB  ·  Datenschutz  ·  Impressum  







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

Alternative zu SLEEP

Ein Thema von qb-tim · begonnen am 7. Apr 2006 · letzter Beitrag vom 10. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#1

Alternative zu SLEEP

  Alt 7. Apr 2006, 13:40
Ich wollte in meinen Programm eine Wartezeit einbauen. Dazu benutzte ich
Delphi-Quellcode:
//...
sleep(500);
//...
Aber ich bemerkte die Wartezeit garnicht.

An einem Testprogramm ist es noch deutlicher:

Delphi-Quellcode:
//... procedure für den Knopfdruck von Button1
begin
 Label1.Caption:='Tschüß'; //Label1 ist schon vorhanden
 sleep(500);
 close;
end;
//...
Wieso bemerkt man keine Wartezeit?

PS: auch bei einer viel größeren Zahl bemerkt man ebenso nichts!
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#2

Re: Alternative zu SLEEP

  Alt 7. Apr 2006, 13:42
naja der Wert den Du an sleep übergibst ist in millisekunden angegeben.. 500 ist dann also eine halbe sekunde. Wenn Du den Wert auf sagen wir 5000 festlegst, solltest Du schon eine Pause bemerken.
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#3

Re: Alternative zu SLEEP

  Alt 7. Apr 2006, 13:47
Hm,...

Das stimmt. In meinem Testprogramm merkt man schon was wenn sleep über 1500 ist...

In meinem anderen Programm muss ich dann nach was anderem suchen...
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#4

Re: Alternative zu SLEEP

  Alt 7. Apr 2006, 13:52
naja das Problem was ich mit sleep habe ist, dass das Programm einfriert, wenn man einfach nur sleep nutzt, so lange die Prozedur aktiv ist.

Um das zu umgehen, mach ich mir ne Schleife mit prezssmasges drinn. z.B. so:

Delphi-Quellcode:
for i := 1 to 1500 do
  BEGIN
    sleep(1);
    application.ProcessMessages;
  END;
da gibt es sicher noch elegantere Sachen, aber es funtzt auf jeden Fall.
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Alternative zu SLEEP

  Alt 7. Apr 2006, 13:54
Hai ihr zwei,

schaut euch doch man Hagens Beitrag in der CodeLibrary zu dem Thema an.

Edit: Ein "ich" in "euch" umgewandelt hat.
Stephan B.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Alternative zu SLEEP

  Alt 7. Apr 2006, 13:56
ich mach das (manchmal) so:

Delphi-Quellcode:
uses DateUtils;
.
.
procedure Wait(Ams : Integer);
var ZP : TDateTime;
begin
ZP:=IncMilliSecond(Now,Ams);
while ZP > Now do
  Application.ProcessMessages;
end;
Ist ne, wie ich finde, sehr amüsante Alternative
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#7

Re: Alternative zu SLEEP

  Alt 7. Apr 2006, 14:03
nice! gefällt mir sogar noch besser, als der Code von Hagen
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Alternative zu SLEEP

  Alt 7. Apr 2006, 14:08
Zitat von Sharky:
schaut ich doch man Hagens Beitrag in der CodeLibrary zu dem Thema an.
Dann kommt hier "Delay revisited #2":
Man sollte den Delay unterbrechen, wenn die Anwendung beendet wurde.
Delphi-Quellcode:
procedure Delay(Milliseconds: Integer);
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;
      if Application.Terminated then Exit; // <===== NEU
      Milliseconds := Tick - GetTickcount;
    end;
  finally
    CloseHandle(Event);
  end;
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Alternative zu SLEEP

  Alt 7. Apr 2006, 14:11
Zitat von Evian:
Delphi-Quellcode:
for i := 1 to 1500 do
  BEGIN
    sleep(1);
    application.ProcessMessages;
  END;
da gibt es sicher noch elegantere Sachen, aber es funtzt auf jeden Fall.
ProcessMessages braucht Zeit und Sleep mit einer Millisekunde = unmöglich.

Also dürfte da wohl mehr als 1,5 Sekunden rauskommen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: Alternative zu SLEEP

  Alt 7. Apr 2006, 14:15
Zitat von Evian:
nice! gefällt mir sogar noch besser, als der Code von Hagen
Ist mein Ironiedetektor kaputt oder ist das wirklich ernstgemeint o.O ?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:16 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