声明:type Int64 = -9223372036854775808..9223372036854775807;
描述:Int64是64位存储的有符号整数。这个大小已经是固定的了,在以后的Delphi版本中也不会再改变。像IntToStr这样的函数也支持Int64类型(通过重载实现)。
整数常量超过Integer类型的最大值时,将强制转换为Int64类型。
备注:在Delphi中没有无符号的64位整数。
Comp类型也是64位有符号整数,现在已不建议使用。
{显示Int64的储存范围} var min, max : Int64; begin // 取得类型的最大值与最小值 min := Low(Int64); max := High(Int64); ShowMessage('Min int64 value = '+IntToStr(min)); ShowMessage('Max int64 value = '+IntToStr(max)); end;
程序运行结果:
Min int64 value = -9223372036854775808
Max int64 value = 9223372036854775807
-----------------------------------------------------------------------------------------------
Delphi 64与32位的差异
转自:http://www.neugls.info/?p=91&lang=zh 最近,Delphi推出了64位预览版本, 我做为一个忠实的Delphier, 看到这消息后,第一时间学习,并写下这个做为以后的参考资料。
不同的地方:NativeInt,NativeUint - 64 bits Point(all pointers) - 64 bits Dynamic Arrays - 64-bit indexing Floating point math – Double Point String Class instance class reference Interface AnsiString WideString UnicodeString Procedure pointer Dynamic array PAnsiChar PWideChar PChar 上面的类型在32位都是4 bytes,在64位下是8 bytes 总体来说:
Delphi/64不支持pascal与BASM(ASM)混写了,只支持纯Asm procedure。 调用过程或函数的前面四传参寄存器也发变成了:RCX, RDX, R8, R9(或XMM0-XMM3) 在处理Message消息结构体时,需要进行显示强制转换,例如: SendMessage(hWnd,WM_SETTEXT,0,LPARAM(@MyCharArray)); Message.Result:=LRESULT(Self); |