FAQ » Sprzęt

Jak sprawdzić czy dysk (A) jest gotowy

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 komentarze

brodny 2005-12-09 22:31

<quote=Piro>Może nie tyle prawidłowe co krótsze i czytelniejsze</quote>
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.)

fatalbomb 2004-05-27 16:49

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 2003-08-21 18:45

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

Drajwer 2003-05-14 20:02

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