Zitat von
Christian Seehase:
function GetComputerName(const AsName : string;const ApdwSize : PDWORD) : LongBool; stdcall; external 'kernel32.dll' name 'GetComputerNameA';
Das geht nicht nur bei string=ShortString sondern auch bei string=AnsiString in die Hose. Denn beim ersten Zugriff auf
AsName wird automatisch überprüft, ob die Länge nicht überschritten wurde, und ob der string kopiert werden muss, da der Referenzzähler > 1 ist. Um dies durchzuführen, greiften die internen Delphiroutinen auf die 8 Bytes, die vor einem String liegen zu. Bei dieser Deklaration hingegen, gibt es diese nicht.