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!');
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.)
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
Może nie tyle prawidłowe co krótsze i czytelniejsze (bardziej eleganckie?) ;)
if dysk_jest_gotowy('A') = True then //na
if dysk_jest_gotowy('A') then //prawidlowe ;-)