求一函数,如何把系统时间读出来精确到微秒
DecodeTime(Present,hour,Min,Sec,MSec);
上面这个函数是精确到豪秒的,有精确的微秒的么?
拜求
DecodeTime(Present,hour,Min,Sec,MSec);
上面这个函数是精确到豪秒的,有精确的微秒的么?
拜求
解决方案 »
- 请问 这个语句错在哪了?
- ***** 高手们来一下,请教一个数据库字段进数组的问题******
- toolbar控件快捷按钮ICO图标放不上是怎么回事???
- 请教大家两个关于字符串应用的基本问题。。。
- 如何在fastReport预览之前取出报表的总页数?
- 呵呵呵,啊凯的Delphi处女作发布啦,希望高手们指教一下
- 利用缓存保存数据,我点击保存按钮后如何判断刚才的数据已经保存了?保存按钮还有效,但再按就会提示
- 请教Delphi7中Rave简单而致命的问题
- 求救:用DELPHI6做WEB SERVICES,总是出现“name not unique in context”
- 字符转换
- For循环执行SQL语句 截取错误提示 并继续执行下一轮循环
- delphi 数据类型转换
Year,month,day,H,M,S,MS: word;
t:TDateTime;
begin
t:=Now;
DecodeDate(t,year,month,day);
DecodeTime(t,H,M,S,MS);
ShowMessage(IntToStr(year)+'-'+IntToStr(month)+'-'+IntToStr(day)+' '+IntToStr(H)+':'+IntToStr(M)+':'+IntToStr(S)+' '+IntToStr(MS));
end;
begin
edit1.Text :=formatdatetime('yyyy-mm-dd hh:n:ss:z',now) ;
end;
我用这个发过脉冲信号
(t2-t1)/c1就是时间,与你的cpu性能有关的 //取系统级时间精度:
var
c1:int64;
t1,t2:int64;
r1:double;
begin
QueryPerformanceFrequency(c1);//WINDOWS API 返回计数频率(Intel86:1193180)(获得系统的高性能频率计数器在一毫秒内的震动次数)
QueryPerformanceCounter(t1);//WINDOWS API 获取开始计数值
sleep(1000);{do...}//执行要计时的代码
QueryPerformanceCounter(t2);//获取结束计数值
r1:=(t2-t1)/c1;//取得计时时间,单位秒(s)
r1:=(t2-t1)/c1*1000;//取得计时时间,单位毫秒(ms)
r1:=(t2-t1)/c1*1000000;//取得计时时间,单位微秒
showmessage(floattostr(r1));
end;
cpu有个计数周期,这个周期是怎样的呢,如果两次计数不在一个周期上又当如何呢,谢谢ls的帮助
同一cpu是不变的
var
c1:int64;
t1,t2:int64;
r1:double;
begin
QueryPerformanceFrequency(c1);//我的cpu是2913470000,就是一秒中计数器跳动这么多次。
QueryPerformanceCounter(t1);//开始计数值
sleep(1000);{do...}//执行要计时的代码
QueryPerformanceCounter(t2);//结束计数值
r1:=(t2-t1)/c1;//取得计时时间,单位秒(s) showmessage(floattostr(r1)); //上面sleep了一秒,看看r1是不是1秒???
end;时间很小的情况下?你以什么作参考时间啊?timer?timer本来就不能准确到10ms。
c1: int64;
t1, t2: int64;
r1: double;
i: integer;
Cha: array[0..1000000] of int64;
begin
QueryPerformanceFrequency(c1); //我的cpu是2913470000,就是一秒中计数器跳动这么多次。
QueryPerformanceCounter(t1); //开始计数值
r1 := c1 / 10000; //一微妙cpu计数值
QueryPerformanceCounter(t2);
i := 0;
flag := true;
while flag do
begin
Application.ProcessMessages;
QueryPerformanceCounter(t2);
if t2 - t1 >= r1 then
begin
//Cha[i] := (t2 - t1);
t1 := t2;
inc(i);
//添加你要执行的代码。最好这段放在一个线程里面。主线程里面单击一下或者运行什么东西就很占时间
end;
end;
end;