最近在做一个项目过程中使用了Delphi制作DLL提供给业务系统调用,驱动业务流程。
在这个过程中发现不少问题,最典型的就是乱码问题,DLL函数里传出来的返回值时不时的有乱码的产生。
这个问题困绕了我很久,最先使用的是PChar,然后修改成PansiChar,但还是不行。往往返回值后面会多一些乱码出来,后来在内部函数见调用的时候就使用了string,在返回给外面PAchar的时候使用了另外一个自定义函数来转换。
function strtopchar(str:string):pchar;
var
arrchar:array[0..102400] of char;
begin
fillchar(arrchar,102400,#0);
StrCopy(@arrchar[0],pansichar(str));
Result:=@arrchar[0];
end;
在这个函数的测试过程中也碰到了些奇怪的问题,当数组长度比小的时候比如200或者根据str长度来取得的时候,str如果是123 则输出着是12 奇数位经常发生这个问题。
所以这个也应急解决办法,正解还没出来。