Parameter als PChar sind problemlos verwendbar, solange die übergebenen Zeichenketten in der
DLL nicht verändert werden.
Wieder auf String casten und dann verändern ist nicht zulässig.
Rückgabewerte aus der
DLL als PChar sind problematisch. Solange der Rückgabewert auf eine Constante oder einen Resourcestring verweist, ist das ok.
Delphi-Quellcode:
function MyDLLFunction(): PChar;
const
sc = 'ConstText';
var
s: string;
begin
s := MyInternFunction;
Result := PChar(s); // unzulässig da "s" nach verlassen der Funktion eventuell nicht mehr existiert
// <- wenn Referenzzähler von s auf 0 fällt, wird der String freigegeben, Result enthält einen ungültiger Zeiger
s := sc;
Result := PChar(s); // zulässig da "s" auf eine Konstante verweist
// Referenzzähler von String-Konstanten ist immer -1
end;