今天,公司领导要求在windows2000的机器上做一程序。
很久没写程序了
很有兴致的打开XE7,简单的写上了这个程序。编译成功。很带劲。。。。。
好,去客户那里实测,我去,无法定位到程序输入点GetSystemTimes于动态连接库kernel32.dll上
这是什么鬼???
============================================================================
难道忙了一天,要换成Delphi7来做?我在XE7的程序里大量的用了泛型,那不是要改到中暑?
============================================================================
判定 kernel32.dll应该都是在Winapi.windows中进行定义的。
咱看看
找到
//{$EXTERNALSYM GetSystemRegistryQuota}
//function GetSystemTimes(var lpIdleTime, lpKernelTime, lpUserTime: TFileTime): BOOL; stdcall;
//{$EXTERNALSYM GetSystemTimes}
对,是这里应该是windows 2000里不存在这个函数
咱去掉
============================================================================
改好,把这个单元另存到项目文件夹下
编译。。。。。
错误!
在System.Classes下有用到这个函数
============================================================================
class function TThread.GetSystemTimes(out SystemTimes: TSystemTimes): Boolean;
{$IF Defined(MSWINDOWS)}
var
Idle, User, Kernel: TFileTime;
begin
//Result := Winapi.Windows.GetSystemTimes(Idle, Kernel, User);
if Result then
begin
SystemTimes.IdleTime := UInt64(Idle.dwHighDateTime) shl 32 or Idle.dwLowDateTime;
SystemTimes.Usertime := UInt64(User.dwHighDateTime) shl 32 or User.dwLowDateTime;
SystemTimes.KernelTime := UInt64(Kernel.dwHighDateTime) shl 32 or Kernel.dwLowDateTime;
SystemTimes.NiceTime := 0;
end;
end;
屏掉//Result := Winapi.Windows.GetSystemTimes(Idle, Kernel, User);
编译通过,再在虚拟机中测试,运行成功!
哇哈哈哈!
我是做梦的死胖子,我骄傲