Hallo
wahrscheinlich eine ganz dumme frage, aber ich finde die variable nicht, die mir anzeigt, wann genau ein bestimmtes item aus einer DXImageList nach dem befehl
Delphi-Quellcode:
form3.dxdraw2.Restore;
form3.dximagelist2.Items[1].Draw(form3.DXDraw2.Surface, 0, 0, 0);
form3.dxdraw2.Flip;
(zuende) gemalt wurde. genau dann will ich einen timer (queryperformancecounter) starten und auf einen bestimmten tastendruck hin stoppen. ich könnte den timer natürlich genau dann starten, wenn ich den befehl zum malen losschicke und damit es genau ist die gemessene zeit (wieder mit queryperformancecounter) für die bearbeitung des befehls davon abziehen. dann allerdings verhakt sich alles, weil ich gleichzeitig einen timer starten und den anderen stoppen muss. aber ich bin mir nicht auch nicht sicher, ob ich durch den performancecounter meherere variablen beschriften kann, oder ob mein fehler woanders liegt:
Delphi-Quellcode:
var
Form3: TForm3;
{starttime: TTimeStamp;}
Res, res2, t1, t2, t3, t4: int64;
bOk: Bool;
tt: integer;
tt2: string;
implementation
procedure StartTimer1;
begin
bOk:= QueryPerformanceFrequency(res);
if bOk = true then
QueryPerformanceCounter(t1);
end;
procedure StartTimer2;
begin
bOk:= QueryPerformanceFrequency(res2);
if bOk = true then
QueryPerformanceCounter(t3);
end;
procedure StopTimer1;
begin
if bOk = true then
QueryPerformanceCounter(t2);
end;
procedure StopTimer2;
begin
if bOk = true then
QueryPerformanceCounter(t4);
end;
{$R *.dfm}
procedure TForm3.DXTimer1Timer(Sender: TObject; LagCount: Integer);
var
tt1, tt2: integer;
tt3, tt4: string;
begin
dxinput2.Keyboard.Update;
if dxinput2.Keyboard.Keys[Key_B]=true then
begin
ShowStimulus1;
StartTimer1;
StopTimer2;
end;
if dxinput2.Keyboard.Keys[Key_N]=true then
begin
ShowStimulus2;
StopTimer1;
StartTimer2;
tt1:=(t2-t1)*1000 div res;
tt2:=(t3-t4)+1000 div res2;
tt3:=inttostr(tt2);
tt4:=inttostr(tt1);
Form3.Caption:= tt4+'ms;'+tt3+'ms';
end;
danke, ihr seid die besten!