Jak sprawdzić czy dysk (A) jest gotowy

DevNull

Posłuży nam do tego funkcja, której parametrem będzie
sprawdzany przez nas dysk, a rezultatem stan dysku (gotowy/niegotowy).

Po sekcji implementation piszemy:

function dysk_jest_gotowy(dysk: string): Boolean; 
var 
Oem : Word; 
D1, D2 : DWORD; 
begin 
Oem := SetErrorMode(SEM_FAILCRITICALERRORS); 
if Length(dysk) = 1 then dysk := dysk + ':\'; 
Result := GetVolumeInformation(PChar(dysk), nil, 0, nil, D1, D2, nil, 0); 
SetErrorMode(Oem); 
end; 

Umieszczamy na formę Button`a i w zdarzeniu onClick piszemy:

if dysk_jest_gotowy('A') = True then 
ShowMessage('Dysk [A] jest gotowy!') 
else 
ShowMessage('Dysk [A] nie jest gotowy!'); 

4 komentarzy

if dysk_jest_gotowy('A') = True then //na
if dysk_jest_gotowy('A') then //prawidlowe ;-)

Może nie tyle prawidłowe co krótsze i czytelniejsze (bardziej eleganckie?) ;)

A nie prościej sprawdzać za pomocą DiskSize (NR_DYSKU) lub DiskFree (NR_DYSKU)? Funkcje te zwracają -1 w razie gdy napęd nie gotowy

Piro napisał(a)

Może nie tyle prawidłowe co krótsze i czytelniejsze

Zalecana jest ta krótsza forma jako prawidłowa - w tej dłuższej kwiatki mogą wyjść we współpracy C/C++ - Delphi (a więc np. kontrolki ActiveX, funkcji API etc.)