没有合适的资源?快使用搜索试试~ 我知道了~
首页Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结
Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结 !最后有个项目要移植到64位,所以这个很有用。在2010中PChar已经不再表示PAnsiChar而是表示PWideChar,如果依然这样写,运行时很可能会得到一个内存访问错误。因为每 次Inc(P),实际上指针向前移动了2字节,因为SizeOf(WideChar)=2,Inc(P)相当于 P:=P+SizeOf(WideChar)。 解决方法是把PChar替换成PAnsiChar
资源详情
资源评论
资源推荐

Delphi7 升级到 Delphi 2010、Delphi XE、Delphi
XE2 总结
2012-01-04 12:47:47|分类:Delphi|标签:delphixe2|举报|字号订阅
这两天把一个使用 Delphi2007 成功升级到了 Delphi2010。升级途中很艰辛,总结了 以下经验
与大家分享。另外,D7 使用的第三方组件,由于官方没有发布 For Delphi2010 的更新,修改的
第三 方组件列表见文章尾部。
1,PChar
因为 Delphi 不支持无类型指针的算术运算,很多程序员使用 PChar 来代替 Pointer,即使指针
指向目标并不是 PAnsiChar。
考虑如下代码:
var
P:PChar;
Buer:Pointer;
begin
GetMem(Buer,255);
P:=Buer;
p^:=#1;
Inc(P);
p^:=#2;
FreeMem(Buer,255);
end;
在 2010 中 PChar 已经不再表示 PAnsiChar 而是表示 PWideChar,如果依然这样写,运行时很
可能会得到一个内存访问错误。因为每 次 Inc(P),实际上指针向前移动了 2 字节,因为
SizeOf(WideChar)=2,Inc(P)相当于 P:=P+SizeOf(WideChar)。
解决方法是把 PChar 替换成 PAnsiChar
2,Move FillChar CopyMemory
这些函数依赖的是字节长度,往往我们直接使用 Length(Str)来获取,这是行不通的。
考虑如下代码:
var
P1,P2:String;
begin
P1:='test';















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0