1.不可以在DLL里面分配字符串空间给调用函数,字符串空间必须在外部分配。
2.不可以将字符串作为返回值,你看见那个WIN API有字符串返回值了。
3.一般都要传递给函数PCHAR的空间长度,避免字符串空间不足。
常见写法
fun xxx(ps: pchar; ilen: integer): integer
var
s: string;
begin
s := 'abc';
result := length(s);
if ilen = 0 then
exit;
if result > ilen then
result := ilen ;
CopyMemory(ps, PChar(s), result);
end;
var
ss: string;
i: integer;
begin
i := xxx(PChar(ss), 0);
SetLength(ss, i);
i := xxx(pChar(ss), i);
end;