Ich weiß jetzt nicht, wie GetDiskFreeSpaceEx bei dir deklariert ist, aber du solltest in Windows.pas den Typen LARGE_INTEGER haben.
Delphi-Quellcode:
var
iFreeBytesAvailable, iTotalNumberOfBytes, iTotalNumberOfFreeBytes: LARGE_INTEGER;
xFreeBytesAvailable, xTotalNumberOfBytes, xTotalNumberOfFreeBytes: Extended;
begin
GetDiskFreeSpaceEx('C:', @iFreeBytesAvailable, @iTotalNumberOfBytes, @iTotalNumberOfFreeBytes);
xFreeBytesAvailable := LoadInt64(iFreeBytesAvailable);
...
end;
// Nachtrag:
Konvertierung ohne Assembler:
Delphi-Quellcode:
function LoadInt64Soft(var Value: LARGE_INTEGER): Extended;
begin
Result := 4294967296.0 * Value.HighPart + Value.LowPart;
end;