Int64:是Delphi中最大的整数,64位有符号整数

来源:互联网 发布:win7比特彗星端口阻塞 编辑:程序博客网 时间:2024/05/18 02:14

声明: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, 看到这消息后,第一时间学习,并写下这个做为以后的参考资料。
   相同点:      在Delphi 64位版本中,UnicodeString,AnsiString,WideString在使用上与32没有区别,只是索引变成了64位,如:S[I]中的I变成了64位。   

Singed types

Delphi/32

Delphi/64

ShortInt

1 bytes

SmallInt

2 bytes

LongInt

4 bytes

Integer

4 bytes

Int64

8 bytes


Unsinged types

Delphi/32

Delphi/64

Byte

1 bytes

Word

2 bytes

LongWord

4 bytes

Cardianl

4 bytes

UInt64

8 bytes

← 符号表示大小与Delphi/32相同
不同的地方: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
总体来说:
  • 同样的Windows API,如:CreateWindowEx,PeekMessage,etc
  • 同样的Delphi RTL:SysUtils,Classes,Generics.Collections,etc
  • VCL也相同:Forms,Graphics,Controls,Menus,etc
  • 错误处理上也相同:try…finally…., try….exception…..
在64位下,这些调用约定将被看做一致:register,passcal, cdecl,stdcall
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);

 

原创粉丝点击