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);
tryif DiskSize(DrvNum - $40) <> -1 then
result := trueelse
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);
trywhile DiskSize(DrvNum - $40) = -1 dobegin// при неудаче выводим диалогif (Application.MessageBox('Диск не готов...' + chr(13) + chr(10) +
'Повторить?', PChar('Диск ' + UpperCase(Drive)), mb_OKCANCEL +
mb_iconexclamation {IconQuestion}) = idcancel) thenbegin
Result := false;
Break;
end;
end;
finally
SetErrorMode(EMode);
end;
end;
Проверить готовность диска А можно с помощью функции DiskInDrive, которая проверяет доступность диска и выводит диалог, если диск не готов.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.