Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.29;
Скачать: CL | DM;

Вниз

i/o error 21   Найти похожие ветки 

 
griff ©   (2003-09-12 14:10) [0]

Использую стандартные компоненты DriveComboBox и DirectoryListBox. При обращении к пустому диску А: (или CD) выходит сообщение "I/O error 21". Как мне его перехватить и выдать вместо него свое?

Оказалось что {I-} на него не распространяется, а DriveComboBoxChange срабатывает уже после того, как выдалось сообщение об ошибке.


 
panov ©   (2003-09-12 14:17) [1]

{$I-} распространяется на все диски.


 
griff ©   (2003-09-12 14:20) [2]

Имелись в виду не диски а ошибка за нумером 21.


 
хз ©   (2003-09-13 03:02) [3]

procedure TFrmMain.DComboBoxChange(Sender: TObject);
begin
try
DListBox.Drive:=DComboBox.Drive;
except
on EInOutError do
//пишешь чего надо...
end;
end;

Кстати, эта ошибка лично у меня наблюдалась только на 98, 2000 и XP не выдают.


 
griff ©   (2003-09-16 09:31) [4]

не, не канает :(
сообщение об ошибке все равно выдается


 
Song ©   (2003-09-16 09:34) [5]

SetErrorMode()


 
griff ©   (2003-09-16 10:01) [6]

блин, и это тоже не помогло ...


 
griff ©   (2003-09-17 11:40) [7]

Все-таки, что же я не так делаю ?

////////////////////////////////////////////////////////////
...
{I-}
Seterrormode(1);
...
procedure TFormInst.DriveComboBox1Change(Sender: TObject);
begin
try
DirectoryListBox1.Drive := DriveComboBox1.Drive;
except
on EInOutError do ShowMessage("Устройство не готово.");
end;
end;
////////////////////////////////////////////////////////////

в результате - все равно получаю сообщение об ошибке :((


 
Palladin ©   (2003-09-17 11:44) [8]

ну комментарий это круто... и он ни о чем компилятору не говорит...
{$I-}


 
griff ©   (2003-09-17 12:08) [9]

извиняюсь, конечно {$I-}
но это ничего не меняет - я получаю сообщение об ошибке :(


 
Palladin ©   (2003-09-17 12:16) [10]

нужно еще снять IOResult, после обращения к ней ошибка после директивы {$I+} появится не должна


 
griff ©   (2003-09-17 12:23) [11]

это понятно, не понятно где это все писать. При попытке зайти на диск А:\ , где отсутствует дискета, я получаю сообщение об ошибке. При этом в процедуру TFormInst.DriveComboBox1Change я вообще не попадаю


 
Palladin ©   (2003-09-17 12:27) [12]

что именно писать?

AssignFile(myfile,"myfile");
{$I-}
reset(myfile);
Res:=IOResult;
{$I+}
If res<>0 then ShowMessage("Ошибка открытия") else
begin
...
CloseFile(myfile);
end;


 
dataMaster ©   (2003-09-17 12:33) [13]

Может это как-нибудь поможет?
http://delphibase.endimus.com/?action=viewfunc&topic=harddisk&id=10415


 
Sandman25 ©   (2003-09-17 12:37) [14]

Мои опыты показали, что сообщение выводится при присваивании DirectoryListBox1.Drive.
Причем это не Exception, перехватить его нельзя. Пишите свой компонент или исправляйте существующий TDirectoryListBox.


 
griff ©   (2003-09-17 13:09) [15]

Sandman25 ©
Такие подозрения зародились давно ... Видимо, надо было услышать это еще от кого-нибудь ...


 
Sandman25 ©   (2003-09-17 13:21) [16]

>Такие подозрения зародились давно ... Видимо, надо было услышать это еще от кого-нибудь ...

Нет, надо было это сразу проверить. Я ведь раньше об этом не знал, а просто проверил за 5 минут под влиянием Вашей ветки :)



Страницы: 1 вся ветка

Текущий архив: 2003.09.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.034 c
9-96046
Project-Soft
2003-03-22 10:12
2003.09.29
Особые столкновения спрайтов в DelphiX !


3-96106
Vitaliygavrilov
2003-09-09 12:55
2003.09.29
Как правильно сделать поиск


1-96183
Альф
2003-09-15 15:43
2003.09.29
Чем бы воспользоваться для вывода форматированного текста ?


14-96431
BOA_KAA
2003-09-10 10:49
2003.09.29
Статьи: сравнение OpenGL и DirectX


9-96041
Glusha
2003-03-26 02:45
2003.09.29
Поиск элемента в списке TList