ANSI string neni vlastni retezec, ale jen odkaz na string. Takze do te knihovny byl predan pouze ukazatel a navic mechanismus DLL neumi primo s retezci pracovat.
Obvykle se predavani stringu pouzitim PChar + predanim jeho velikosti.
Takze to predani by mohlo vypadat takto:
var
s: string;
l: Integer;
Buffer: PChar;
begin
s := Meno1.Text;
l := Length(s);
Buffer := StrAlloc(l + 1);
StrPLCopy(Buffer, s, l);
// zde prijde volani funkce z DLL
StrDispose(Buffer);
end;
v DLL se ziska string:
var
s: string;
begin
{ data: Pchar, DataSize: Integer jsou parametry DLL funkce }
SetString(s, Data, DataSize);
...
end;