Nein
Du lieferst einen Pointer auf ein
Ansi-Zeichen zurück und gibts den Speicher auf den dieser Pointer verweist auch wieder frei.
Was denkst du, was unter dem Pointer nun zu finden ist?
So ist das leider nur ein Zufallsgenerator, der alles Mögliche produzieren kann.
So, Spaß beiseite ...
Der Aufrufer muss selber den Speicher für den Rückgabewert zur Verfügung stellen und sich um die Freigabe kümmern. Die Prozedur füllt dann einfach nur diesen Speicher.
Beispiele finden sich im
MSDN
http://msdn.microsoft.com/de-de/libr...(v=vs.85).aspx
Dort wird ein (Pointer auf den) Buffer für die Rückgabe übergeben und auch die Größe des Buffers.
Die Funktion füllt dann den Buffer.
Hier ein Beispiel für den Aufruf
Delphi-Quellcode:
function GetEnvironmentVariable(const AEnvVar: string): string;
var
Len: Integer;
begin
Len:=Windows.GetEnvironmentVariable(Pchar(AEnvVar),nil,0) ;;
if Len>0 then
begin
SetLength(Result, Len);
Windows.GetEnvironmentVariable(Pchar(AEnvVar),PChar(Result), Len);
end
else
begin
Result:='';
RaiseLastWin32Error;
end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)