Board logo

Subject: CnStrDiff的问题 [Print This Page]

Author: yookee    Time: 2012-9-18 00:16     Subject: CnStrDiff的问题

XE2 update4下
项目引用CnStrDiff.pas,
执行到下面语句的时候会出错,提示访问冲突。
diagVecF[0] := x1;

对ascii字符串没问题,会不会是下面的语句在操作多字节字符串的时候有问题?
PChar(diagVecF) := PChar(IntArr_f) - SizeOf(Integer) * (MAX_DIAGONAL - MaxD);

从csdn上下了一个包,包里有别人编译好的一个程序,运行比较中文字符串没问题,但是包里的源代码在我这里运行也有这个问题。
包里的CnStrDiff.pas是早期版本,但是和现有CnVCL里的基本没啥改动。

[ 本帖最后由 yookee 于 2012-9-18 09:49 编辑 ]
Author: Passion    Time: 2012-9-18 11:48

我查一下。
Author: Passion    Time: 2012-9-20 13:44

此现象可能是未处理高版本Delphi的Unicode问题导致的,Unicode版的Delphi里,Char是2字节,PChar的行为发生了变化。
楼主可以试着把PChar全都改成PAnsiChar试一试?
Author: yookee    Time: 2012-9-20 16:41     Subject: 回复 #3 Passion 的帖子

OK,好了
Author: Passion    Time: 2012-9-20 21:07






Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0