Советы по Delphi


Как мне проверить готовность диска 'a:'? I


    function DiskInDrive(const Drive: char): Boolean;
var
DrvNum: byte; EMode: Word; begin
result := false; DrvNum := ord(Drive); if DrvNum >= ord('a') then dec(DrvNum,$20);

EMode := SetErrorMode(SEM_FAILCRITICALERRORS); try if DiskSize(DrvNum-$40) <> -1 then result := true else messagebeep(0); finally SetErrorMode(EMode); end; end;

Дополнение от читателя:

...можно для пущей функциональности добавить ряд строк:

    function DiskInDrive(const Drive: char): Boolean;
var
DrvNum: byte;
EMode: Word;
begin
result := true; // было false
DrvNum := ord(Drive);
if DrvNum >= ord('a') then dec(DrvNum,$20);
EMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
while
DiskSize(DrvNum-$40) = -1 do begin // при неудаче выводим диалог
if (Application.MessageBox('Диск не готов...'+chr(13)+chr(10)+ 'Повторить?',PChar('Диск '+UpperCase(Drive)),mb_OKCANCEL+ mb_iconexclamation{IconQuestion})=idcancel) then begin Result:=false; Break; end; end; finally
SetErrorMode(EMode);
end;
end;

С уважением, Галимарзанов Фанис [000076]



Содержание раздела