Când scrieți un fișier pe disc (în special dacă amovibil mass-media - floppy disk sau o unitate flash USB), este de dorit să verificați mai întâi, iar dacă spațiul este suficient? Pentru acest scop DiskFree funcția (n) și DiskSize (n). Prima returnează cantitatea de spațiu liber pe disc, în kilobytes, al doilea - dimensiunea totală a discului în kilobytes. Funcții returnează un „foarte lung“ 64-biți tip întreg Int64. Parametrul n - un număr întreg, care este codificată disc: 0 - unitate de curent, 1 - unitate A. 3 - C: unitate, etc. De exemplu, puteți afișa informații despre disc:
ffFixed, 10,2) + „GB liber +
FloatTostrF (DiskFree (d) / 1073741824, ffFixed, 10,2) + 'GB'
Funcția freespace la intrarea furnizată numele discului ca un șir de text, de exemplu, „D: \“. Pentru a converti numele de text al discului în numărul său de serie, utilizați următoarea metodă: calculat DRP Cod literă de unitate (d [1]) și se scade din ea litera de cod A. Dacă numele unității A: \, după scăderea se obține 0, C: \ - get egalitate de puncte, etc. Și dacă această diferență este de a adăuga una, apoi unitatea A: \ va corespunde la 1, unitatea B: \ - 2 ... după cum este necesar. Constant 1073741824 = 1024 3 servește pentru a transfera kilobytes în gigabytes.
Și cum știi ce toate unitățile logice din sistem? Este simplu:
IF DirectoryExists (c + ': \') ATUNCI
Itereaza peste toate posibilele nume de discuri de la C: la Z. Unitățile nu se ating, astfel încât să nu sperie utilizatorul. În cazul în care calea către următorul disc este găsit, scrie numele discului la o gamă dinamică de șiruri de text. De exemplu, cu o astfel de funcție poate fi afișat într-o listă de componente de acționare TComboBox:
Procedura TForm1.Button1Click (Expeditor: TObject);
Și cum de a defini ceea ce avem de-a face - cu o unitate floppy, hard disk, unitate de rețea? Pentru aceasta este caracteristică GetDriveType a API Windows-funcții. Luați în considerare acest exemplu:
CASE GetDriveType (PCHAR (s)) DE
1: Rezultat: = 'Fără disc';
DRIVE_REMOVABLE: Rezultat: = 'Drive sau Flash';
DRIVE_FIXED: Rezultat: = 'Hard Drive';
DRIVE_REMOTE: Rezultat: = 'Discul de alimentare';
DRIVE_RAMDISK: Rezultat: 'disc virtual' =
Rezultat: = „Nu se poate rezolva“
Deoarece toate funcțiile de lucru API Windows cu indicii la text siruri de caractere, de obicei, un șir de caractere de tip Pascal STRING trebuie să fie convertit într-un pointer folosind PCHAR operație.