Ich danke dir.
Hier ist so ein Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
p : pchar;
dwLen : dword;
begin
// folgender Witz: Wenn der Puffer zu klein ist, dann
// liefert "GetWindowsDirectory" die erforderliche
// Größe zurück, DAS #0-ZEICHEN EINGESCHLOSSEN ...
dwLen := GetWindowsDirectory(nil,0);
if(dwLen > 0) then
begin
GetMem(p,dwLen);
try
ZeroMemory(p,dwLen);
// ... da der Puffer nun groß genug ist, liefert
// die Funktion die Anzahl der kopierten Zeichen
// zurück, die abschließende #0 diesmal NICHT
// eingeschlossen (deswegen "dwLen - 1")
if(GetWindowsDirectory(p,dwLen) = dwLen - 1) and
(p[0] <> #0) then
MessageBox(0,p,nil,0);
finally
FreeMem(p);
end;
end;
end;
Wenn du da mal das Erstellen des Speichers weglässt, dann kracht´s ...