AGB  ·  Datenschutz  ·  Impressum  







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

0,833 ms Delay in Delphi?

Ein Thema von thomasdrewermann · begonnen am 16. Jun 2002 · letzter Beitrag vom 16. Jun 2002
Antwort Antwort
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#1

0,833 ms Delay in Delphi?

  Alt 16. Jun 2002, 12:27
Wie kann ich in Delphi ein Delay von 0,833 ms realisieren?
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 16. Jun 2002, 12:42
Hi,

Luckie hat doch mal was mit Delay in den Faq's geschrieben. Villeicht kannst du msec satt LongInt, als Real deklarieren und somit auch ,zahlen eingeben. Villeicht gehts ja.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 16. Jun 2002, 12:55
Moin Thomas,

schau Dir doch auch mal die Funktionen QueryPerformanceCounter, QueryPerformanceFrequency an.
Dann blieben noch die Multimedia Timer.

Mit GetTickCount usw. wirst Du da wohl leider nichts werden, da dessen Auflösung bestenfalls 1ms beträgt, und die Rückgabe der Werte erfolgt auch nicht gerade mit der höchsten Präzision.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#4
  Alt 16. Jun 2002, 14:45
Kannst du mir n CODE-BEISPIEL basteln??
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 16. Jun 2002, 15:10
Moin Thomas,

ich hab's mal versucht

Code:
var
  iFreq       : int64;
  iCountStart : int64;
  iCountEnd   : int64;
  iDelta      : int64;
  iCountPerSec : int64;
  iCount833    : int64;

begin
  // INITIALISIERUNG
  QueryPerformanceFrequency(iFreq);
  QueryPerformanceCounter(iCountStart);
  QueryPerformanceCounter(iCountEnd);
  // Aufwand für den Aufruf ermitteln, um die Präzision zu erhöhen
  iDelta := iCountEnd-iCountStart;
  QueryPerformanceCounter(iCountStart);
  while true do
  begin
    QueryPerformanceCounter(iCountEnd);
    if ((iCountEnd-iCountStart-iDelta)/iFreq) >= 1 then
    begin
      iCountPerSec := (iCountEnd-iCountStart-iDelta);
      break;
    end;
  end;
  iCount833 := Round((iCountPerSec / 1000000) * 833);
  // INITIALISIERUNG ENDE
  // iCount833 enthält jetzt, so ca., die Anzahl der "Ticks" des
  // PerformanceCounters für 0,833 ms
  // iCount833, und iDelta müssen global zugänglich sein, und, sinnvoller Weise,
  // beim Programmstart initialisiert werden.
  // Wichtig: Der Wert ist Rechnerabhängig, kann also nicht einmal
  // Berechnet und als Konstante angegeben werden.

  // 0,833 ms warten
  QueryPerformanceCounter(iCountStart);
  while true do
  begin
    QueryPerformanceCounter(iCountEnd);
    if (iCountEnd-iCountStart-iDelta) >= iCount833 then
    begin
      break;
    end;
  end;
Ob's so wirklich einwandfrei funzt weiss ich leider nicht, aber ich denke mal, dass Du da eine Testmöglichkeit hast, wenn Du es schon so genau wissen willst
Einziges Problem: Der PerformanceCounter steht nicht auf jedem Rechner zur Verfügung.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#6
  Alt 16. Jun 2002, 19:46
Ich werds nächste Woche mal probieren, morgen schreib ich erstmal eine Lateinklausur (hoffentlich 4)....
  Mit Zitat antworten Zitat
Antwort Antwort


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