БОЛЬШОЙ FAQ ПО DELPHI



Как проверить готовность диска А

Автор: Галимарзанов Фанис

Девица не готова - device not ready.


 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;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ