Если в DriverComboBox выбрать например диск A, когда в нем нет дискеты, то вылетает сначало сообщение о том что диска нет, а потом ошибка I/O error 21. Как можно проверить это условие.
Я пишу в OnChange: if DiskSize(0)=-1 then Application.messageBox(...)
но это не проходит всеравно системная ошибка вылетает, как ее отключить?
Точно знаю что можно эту штуку провернуть, получалось когда-то, а теперь забыл как делал. Напомните мне.
Как проверить ошибку в DriverComboBox
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Код: Выделить всё
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;