XE2编译的程序无法在windows 2000 windows98上运行的错误解决

今天,公司领导要求在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);

编译通过,再在虚拟机中测试,运行成功!

哇哈哈哈!

我是做梦的死胖子,我骄傲


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值