Voor een van mijn projecten (ApplePi-Baker) wilde ik weten hoeveel ruimte er op een disk was, voor het opslaan van een tijdelijk bestand.
Helaas kon ik geen zinvolle systeem API's vinden en "df" werkt wel goed, maar ik wilde geen command-line tools gebruiken.
Dit is wat ik wilde bereiken: van een gegeven pad, b.v. "/Volumes/LIBREELEC/overlays" (op een USB stick), of "/users/Username" (Mac disk), wilde ik weten hoeveel ruimte er nog beschikbaar was.
Lazarus Pascal blijft me elke keer weer prettig verbazen met z'n handige functies, en op de volgende manier doe je dit voor MacOS (en waarschijnlijk Linux ook).
Als eerste moeten we een disk "toevoegen" met de "AddDisk" functie - het blijkt dat we hier gewoon een directory kunnen opgeven.
Deze functie geeft dan een nummer (byte) terug die we door kunnen geven aan de functie "DiskFree".
Dit ziet er dan b.v. zo uit:
...
uses ... SysUtils ...; // default included in a project
...
var
diskID:byte;
begin
diskID := AddDisk('/Volumes/LIBREELEC/overlays');
ShowMessage('Available disk space = '+ IntToStr( DiskFree(diskID) ) + ' bytes');
end;
En dat is alles ... eitje