德尔福。
为什么
type
myInt = Integer;
myNewInt = -2147483648..2147483647;
var
a: myint;
b: myNewInt;
begin
a := b;
end;
尽管类型形式不同,但它可以正常编译 - 一个是在这里声明的,另一个是从其他模块继承的。如果
uses
windows;
type
_FILETIMEA = record // Copy from windows.pas
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
var
x: _FILETIMEA;
y: windows._FILETIME;
begin
x := y;
end;
将导致编译错误(行x:=y;
[DCC Error] ... E2010 不兼容的类型:'windows._FILETIME' 和 '_FILETIMEA'
),但是类型 _FILETIMEA = Windows._FILETIME
?
最佳答案
Delphi 不支持鸭子类型。您有 2 条不同的记录。它们只是看起来很像,但对于编译器来说它们是两种不同的类型。如果你想分配这两个变量,你必须对它们进行类型转换,因为它们具有相同的大小。
x := _FILETIMEA(y);
关于delphi - 类型差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8540780/