Hallo,
Zitat von
Ati:
@Chegga
Das funktioniert nicht mit Festplatten >2GB
das kann auch nicht, in Delphi 3 gibt DiskSize einen Integer zurück:
function DiskSize(Drive: Byte): Integer;
und GetDiskFreeSpaceEx wird mit Int64 unter Delphi 3 so auch nicht funktionieren,
da es so deklariert ist:
Delphi-Quellcode:
function GetDiskFreeSpaceEx(lpDirectoryName: PChar;
var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes: Integer;
lpTotalNumberOfFreeBytes: PInteger): BOOL; stdcall;
@Ati:
Hast Du das Programm in der Zip (
http://www.efg2.com/Lab/Library/Delp...paceKludge.ZIP) aus meinem Beitrag ausprobiert?
Es liefert richtige Werte, zumindest bei XP.
Das tut der folgende Code, den ich so ähnlich unter XP und NT nutze, auch:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var SectorsPerCluster,
BytesPerSector,
NumberOfFreeClusters,
TotalNumberOfClusters : DWORD;
Cluster, Gesamt, Frei: double;
begin
GetDiskFreeSpace(PChar('C:\'), SectorsPerCluster, BytesPerSector, NumberOfFreeClusters, TotalNumberOfClusters);
Cluster := SectorsPerCluster * BytesPerSector;
Gesamt := Cluster * TotalNumberOfClusters;
Frei := Cluster * NumberOfFreeClusters;
showmessage('Freier Speicherplatz: '+FormatFloat('#,##0',Frei));
showmessage('Gesamte Speichergröße: '+FormatFloat('#,##0',Gesamt));
end;
Das sagt Microsoft dazu:
GetDiskFreeSpace