Mach das mal folgender Maßen:
Delphi-Quellcode:
function StrToPChar(SourceStr: Ansistring; var DestStr: pChar): Integer;
begin
if SourceStr='' then
begin DestStr:=NIL;
exit;
end;
DestStr := StrAlloc(length(SourceStr) + 1); //speicher für DestStr anfordern
Move(SourceStr[1], DestStr^, length(SourceStr) + 1); //inhalt von SourceStr nach DestStr kopieren
//fals es keine binärdaten sind dann die abschließende #0 (Stringende)
DestStr[length(SourceStr)] := #0; //bei DestStr noch ein #0 anhängen
//falls es doch binärdaten sind ist es besser die Länge zurück zu geben
result := length(SourceStr);
end;
var
meinPChar : pChar;
begin
StrToPChar(Data^.FServiceName,meinPChar);
ServiceGetStatus(meinPChar);
StrDispose(meinPChar);
end;
So holst du dir sauber den Speicher für deinen PChar und gibts diesen auch immer wieder frei