Timer < que 1ms
Olá pessoal.
Preciso contar tempo menor que 1ms
Em minha aplicação o tempo varia de 0,5ms a 1,5ms
Daí que o timer só aceita integer e não dá para quebrar menor que 1 ms.
Alguma santa alma poderia me dar uma dica de como faço uma thred para isso ou algo que funcione?
Grato pela força e bom feriado.
Malereis
Preciso contar tempo menor que 1ms
Em minha aplicação o tempo varia de 0,5ms a 1,5ms
Daí que o timer só aceita integer e não dá para quebrar menor que 1 ms.
Alguma santa alma poderia me dar uma dica de como faço uma thred para isso ou algo que funcione?
Grato pela força e bom feriado.
Malereis
Alexandre
Curtidas 0
Respostas
Marco Salles
07/04/2012
Eu acho que alguem ja pediu isto aqui também, De qualquer forma segue
http://marcosalles.wordpress.com/?p=692&preview=true
http://marcosalles.wordpress.com/?p=692&preview=true
GOSTEI 0
Alexandre
07/04/2012
OLá Salles.
Valeu pela dica.
Abraços
Valeu pela dica.
Abraços
GOSTEI 0
Marco Salles
07/04/2012
Eu acho que alguem ja pediu isto aqui também, De qualquer forma segue
http://marcosalles.wordpress.com/?p=692&preview=true
http://marcosalles.wordpress.com/?p=692&preview=true
<a href=http://marcosalles.wordpress.com/?p=692&preview=true class=postlink>http://marcosalles.wordpress.com/?p=692&preview=true/</a>
GOSTEI 0
Alexandre
07/04/2012
Olá Salles..
Nesse link http://marcosalles.wordpress.com/?p=692&preview=true
No código que vc mencionou, o que significa essa linha, abaixo de type?
[{9B36187D-CD62-4A9D-969B-23D9B512A659}]
Parece um serial......
Grato
Malereis
Nesse link http://marcosalles.wordpress.com/?p=692&preview=true
No código que vc mencionou, o que significa essa linha, abaixo de type?
[{9B36187D-CD62-4A9D-969B-23D9B512A659}]
Parece um serial......
Grato
Malereis
GOSTEI 0
Alexandre
07/04/2012
Opa... Isso parece que é para o Delphi 10
No Delphi 7 parece que não dá para declarar em uses Diagnostics.
Grato
No Delphi 7 parece que não dá para declarar em uses Diagnostics.
Grato
GOSTEI 0
Marco Salles
07/04/2012
Meireles este número é um GUID .. Identificador de interface
Digite CNTR + SHIFT + G no seu editor de código que ele gerará um valor
igual a este
quanto a voce utilizar o Delphi 7 , voce tem que implemetar a classe
Tire a referencia a unidade Diagnostics defina uma nova Unidade no seu exemplo
De uses a esta Unidade e mande Bala
Digite CNTR + SHIFT + G no seu editor de código que ele gerará um valor
igual a este
quanto a voce utilizar o Delphi 7 , voce tem que implemetar a classe
Tire a referencia a unidade Diagnostics defina uma nova Unidade no seu exemplo
De uses a esta Unidade e mande Bala
unit StopWatch;
interface
uses Windows, SysUtils, DateUtils;
type TStopWatch = class
private
fFrequency : TLargeInteger;
fIsRunning: boolean;
fIsHighResolution: boolean;
fStartCount, fStopCount : TLargeInteger;
procedure SetTickStamp(var lInt : TLargeInteger) ;
function GetElapsedTicks: TLargeInteger;
function GetElapsedMiliseconds: TLargeInteger;
function GetElapsed: string;
public
constructor Create(const startOnCreate : boolean = false) ;
procedure Start;
procedure Stop;
property IsHighResolution : boolean read fIsHighResolution;
property ElapsedTicks : TLargeInteger read GetElapsedTicks;
property ElapsedMiliseconds : TLargeInteger read GetElapsedMiliseconds;
property Elapsed : string read GetElapsed;
property IsRunning : boolean read fIsRunning;
end;
implementation
constructor TStopWatch.Create(const startOnCreate : boolean = false) ;
begin
inherited Create;
fIsRunning := false;
fIsHighResolution := QueryPerformanceFrequency(fFrequency) ;
if NOT fIsHighResolution then fFrequency := MSecsPerSec;
if startOnCreate then Start;
end;
function TStopWatch.GetElapsedTicks: TLargeInteger;
begin
result := fStopCount - fStartCount;
end;
procedure TStopWatch.SetTickStamp(var lInt : TLargeInteger) ;
begin
if fIsHighResolution then
QueryPerformanceCounter(lInt)
else
lInt := MilliSecondOf(Now) ;
end;
function TStopWatch.GetElapsed: string;
var
dt : TDateTime;
begin
dt := ElapsedMiliseconds / MSecsPerSec / SecsPerDay;
result := Format(%d days, %s, ) ;
end;
function TStopWatch.GetElapsedMiliseconds: TLargeInteger;
begin
result := (MSecsPerSec * (fStopCount - fStartCount)) div fFrequency;
end;
procedure TStopWatch.Start;
begin
SetTickStamp(fStartCount) ;
fIsRunning := true;
end;
procedure TStopWatch.Stop;
begin
SetTickStamp(fStopCount) ;
fIsRunning := false;
end;
end.
GOSTEI 0
Alexandre
07/04/2012
Olá Salles.
Grato pela dica..
Vou implementar.
Abraços
Malereis
Grato pela dica..
Vou implementar.
Abraços
Malereis
GOSTEI 0