Auch wenn es nicht optimal ist, wenn man eine
WinAPI aufruft und ihren Rückgabewert ungeprüft verwenden will...
Delphi-Quellcode:
function Test1: string;
var
Buffer: array[0..MAX_PATH] of Char;
begin
GetTempPath(Length(Buffer), Buffer);
Result := Buffer;
end;
SizeOf = Bytes
aber der Parameter will Chars (Zeichenanzahl)
> siehe
GetTempPath
GetTempPath füllt den Puffer mit Nullen und schreibt einen String an den Anfang
D2010 =
Unicode (2 Byte pro Char) und schwups hast du einen Pufferüberlauf, da du behauptest der Puffer wäre größer, als er ist.
Ein Therapeut entspricht 1024 Gigapeut.