Hi himitsu
Ich denke eher mal deine Schleife ist falsch.
Sorry, das ist nicht mein Code, sondern der stammt von
hier.
Der eigentliche Fehler steckt in Deinem Code:
"i" iteriert über die Elemente des Arrays, und
diesen Index übergibst Du an DiskFree(i):
Delphi-Quellcode:
Result := TDirectory.GetLogicalDrives;
for i:=Low(Result) to High(Result) do
begin
Result[i] := GetOneDrive(Result[i]);
space := DiskFree(i); <-- falscher Parameter!
Du musst
aber die Nummer des Laufwerks übergeben, wobei 1=A, 2=B usw. bedeutet. Also den Inhalt des Arrayelements an der Stelle "i", und nicht "i" selber:
Delphi-Quellcode:
LDrive := Ord(Result[i][1]) - Ord('A') + 1;
space := DiskFree(LDrive);
.
Oder aber direkt GetDiskFreeSpaceEx(Result[i], Space, ...) verwenden. Diese
API-Funktion arbeitet direkt mit Laufwerksbuchstaben bzw. Ordnernamen.