AGB  ·  Datenschutz  ·  Impressum  







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

Delay

Ein Thema von himitsu · begonnen am 7. Aug 2012 · letzter Beitrag vom 17. Sep 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu
Online

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

Delay

  Alt 7. Aug 2012, 15:13
Man könnte doch bestimmt mal diese Beiden zusammenfassen (is ja das Selbe und auch noch vom Gleichen)
http://www.delphipraxis.net/96-delay-delphi.html
http://www.delphipraxis.net/2637-anw...zufrieren.html

dann entfernen und im dritten Eintrag integrieren.
http://www.delphipraxis.net/6620-delay.html
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 lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Delay

  Alt 8. Aug 2012, 17:45
Man könnte doch die beiden Versionen auch noch wieder kombinieren, von toms und negaH (so hat man ne Ressourcen sparende nonVCL Version):


Delphi-Quellcode:
procedure Delay(Milliseconds: Integer);
var
  Tick: DWord;
  Event: THandle;
  Msg: TMsg;
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;
      if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then begin;
        if Msg.message = WM_QUIT then begin;
          PostQuitMessage(Msg.wParam);
          Break;
        end;
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
      Milliseconds := Tick - GetTickcount;
    end;
  finally
    CloseHandle(Event);
  end;
end;
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Delay

  Alt 8. Aug 2012, 18:46
Für NonVCL und bis D2007 isses so OK, aber für die VCL nicht, da dort noch mehr in der Schleife passiert und spätetens ab D2009 sollte man es für's Unicode anpassen.
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 DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Delay

  Alt 8. Aug 2012, 19:28
Wie, Unicode? An welcher Stelle sind denn da Strings o.ä. im Spiel?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Delay

  Alt 8. Aug 2012, 19:30
z.B. bei den TastenCodes, oder bei Messages zum Auslesen/Senden von Text, wie WM_GETTEXT?
siehe IsWindowUnicode

[add]
Delphi-Quellcode:
procedure Delay(Milliseconds: Integer);
var
  Unicode: Boolean;
  Event: THandle;
  Tick: DWORD;
  Msg: TMsg;
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
      if PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) then begin
        Unicode := (Msg.hwnd = 0) or IsWindowUnicode(Msg.hwnd);
        if (not Unicode and PeekMessageA(Msg, 0, 0, 0, PM_REMOVE)) or (Unicode and PeekMessageW(Msg, 0, 0, 0, PM_REMOVE)) then begin
          if Msg.message = WM_QUIT then begin
            PostQuitMessage(Msg.wParam);
            Break;
          end;
          TranslateMessage(Msg);
          if Unicode then DispatchMessageW(Msg) else DispatchMessageA(Msg);
        end;
        Milliseconds := Integer(Tick - GetTickcount);
      end;
    end;
  finally
    CloseHandle(Event);
  end;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 8. Aug 2012 um 20:07 Uhr)
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#6

AW: Delay

  Alt 8. Aug 2012, 20:15
Ehrlich gesagt: Ich halte dieses Delay für grossen Mist!

http://support.microsoft.com/kb/172338/de
Zitat:
Das Betriebsystem stellt mehrere Zeitgeber mit verschiedenen Genauigkeitsstufen zur Verfügung:

Funktion____________Einheit_______________________ _Genauigkeit

Now, Time, Timer____Sekunden_______________________1 Sekunde
GetTickCount________Millisekunden_________________ _ca. 10 ms
TimeGetTime_________Millisekunden_________________ _ca. 10 ms
QueryPerformanceCounter_QueryPerformanceFrequency_ _gleich

Wenn Ihr System Zähler mit hoher Genauigkeit unterstützt, können Sie "QueryPerformanceCounter" und "QueryPerformanceFrequency" verwenden, um äußerst genaue Zeitmessungen durchzuführen.

----------
Warum wird in schöner Regelmäßigkeit dieser uralte Mist ausgekramt:
Bei manchen ist wohl die Zeit bei 1982 stehengeblieben!

Geändert von hathor ( 8. Aug 2012 um 21:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Delay

  Alt 8. Aug 2012, 21:12
Entschuldigung, warum diese dedizierte Meinung?
Da ich mit den sog. SplashScreens nicht viel am Hut habe, nicht soo fundiert, aber das scheint mir eine typische Delay-Anwendung zu sein. Vor kurzem gab es auch ein paar Beiträge zu Diensten, und da war so wie ich das verstanden habe auch Delay im Spiel.
Kann auch sein, daß ich da etwas vollkommen falsch verstanden habe, dann bitte ich um Aufklärung

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.345 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Delay

  Alt 8. Aug 2012, 21:53
Warum wird in schöner Regelmäßigkeit dieser uralte Mist ausgekramt:
Bei manchen ist wohl die Zeit bei 1982 stehengeblieben!
Und was ist daran schlecht? Windows ist kein Echtzeitbetriebssystem, insofern ist mir das doch bei einem Aufruf von Delay total egal, ob die Genauigkeit ein paar Millisekunden beträgt... Wozu soll ich da unbedingt nen PerformanceCounter nehmen?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Delay

  Alt 8. Aug 2012, 22:07
Ich weiß auch nicht, was man gegen eine Genauigkeit von immerhin durchschnittlich 0,010 bis 0,016 Sekunden hat. (merkt eh kein Benutzer diese Abweichung)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#10

AW: Delay

  Alt 9. Aug 2012, 07:05
hathor hat vielleicht gestern abend ein schlechtes Bier getrunken.
Oder gar keins

Geändert von Furtbichler ( 9. Aug 2012 um 07:20 Uhr)
  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 18:07 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