首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于64位程序的开发有关问题

2012-07-04 
关于64位程序的开发问题大家好,不知道大家有没有遇到这种开发需求,目前很多客户服务都转成64位,这样以来,

关于64位程序的开发问题
大家好,不知道大家有没有遇到这种开发需求,目前很多客户服务都转成64位,这样以来,很多以前开发的程序没法用了,如果想把之前的32为程序转成64位有什么好的办法?求教了!

[解决办法]
32位程序仅仅稍稍修改就可以编译出64位程序.而且DCC64是32位程序.也是就是可以再32位的Windows上编译.但必须在64位的计算机上执行编译出来的程序.
[解决办法]
所有指针为64位,其他类型不变,Byte,ShortInt,Word,SmallInt,DWORD,Integer/LongInt,
Int64,UInt64还是以前的,没区别,
尤其注意的是强转的时候,
比如我们通常这么写

var
P : Pointer/PAnsiChar/其他指针
P := Ptr(integer(P) + SizeOf(xxx));
或者用的多的
SendMessage(.. integer(aString)..);
这种也是一样的问题.

由于P是64位的了,而integer(P)强转类型后,指针变成32位了,丢弃了高位,指针肯定不正确了,
64位后,应该是
P := Ptr(int64(P) + SizeOf(xxx));


所以编译前,把类型强转的提示打开,再进行编译,检查所有提示的地方,看是否有指针强转时丢失高位的情况,

结构定义中,如果包含了指针,那结构的大小将变大,这个得足够重视

主要是指针的问题

热点排行