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;