基数不兼容类型错误DelphiXE2

基数不兼容类型错误DelphiXE2,delphi,delphi-xe2,Delphi,Delphi Xe2,我真的不理解这个“不兼容类型”错误(Delphi XE2) [……] 属性句柄:基数读取GetHandle->error hereTHandle是基于Delphi XE中的Cardinal声明的类型。(由于64位和跨平台,它在XE2中定义为NativeUInt)。这是一种新型的 如果您的GetHandlegetter返回一个THandle,那么您的属性也应该声明为THandle。更改它,事情就会正常进行。因此(与DelphiXE2相关)我对NativeUInt进行了更改。我现在有了这个僵局,另一

我真的不理解这个“不兼容类型”错误(Delphi XE2)

[……]


属性句柄:基数读取GetHandle->error here

THandle
是基于Delphi XE中的
Cardinal
声明的类型。(由于64位和跨平台,它在XE2中定义为
NativeUInt
)。这是一种新型的


如果您的
GetHandle
getter返回一个
THandle
,那么您的属性也应该声明为
THandle
。更改它,事情就会正常进行。

因此(与DelphiXE2相关)我对NativeUInt进行了更改。我现在有了这个僵局,另一个与MMSystem WaveInClose相关的不兼容错误类型Integer和Antivent。->WaveInClose方法返回系统。cardinal@volvox:这是由相同类型的错误引起的,因此修复程序将是相同的-更改其中一种类型以与另一种兼容。尽可能使用XE2类型,因为它们将在XPlatform和64位中工作,正如我前面提到的。(如果您仔细阅读,我的答案是将其更改为
THandle
,而不是
NativeUInt
;这样可以使其前后兼容。)谢谢-我终于在Delphi 2007下接受了该项目-导致太多库不是最新的。我感到痛苦。我正在转换大约100 Mb的sources 2006->XE2:-)和一些组件,如ToolBar97和pascal HTMLViewer,它们早就过时了。
function TWaveBase.GetHandle: THandle;
begin
  if HandleNeeded then begin
    if HandleAllocated then
      CloseHandle;
    CreateHandle(False);
  end;
  FHandleNeeded:=False;
  Result:=FHandle;
end;