5
我正餐這個代碼來獲得系統時間:爲什麼中斷0x2A在x64中不起作用?
procedure GetSystemUpTime(var Hour, Minute : integer);
function GetSysTime : dword;
asm
int $2a
end;
begin
Hour := GetSysTime() div 3600000;
Minute := GetSysTime() mod 3600000 div 60000;
end;
procedure TForm1.Button1Click(Sender : TObject);
var
H, M : integer;
begin
GetSystemUpTime(H, M);
Label1.Caption := IntToStr(H) + ':' + IntToStr(M);
end;
我測試它在win8 x86
和XP x86
它的工作原理,但在win7 x64
錯誤失敗:
我不知道怎麼弄系統在x64中斷,任何人都可以修復它?
謝謝您的回答! – Hanlin
您複製了OP代碼中的錯誤 - 想象在兩次調用GetTickCount()之間,時間從hh:59:59.999改爲(hh + 1):00:00.000。 – mghie
@mghie立即修復 – RRUZ