Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
14-96352
Igor_thief
2003-09-12 12:36
2003.09.29
PopupMenu


3-96052
P0tia
2003-09-10 17:20
2003.09.29
Люди добрые, помогите с Excel


14-96446
Кен
2003-09-10 07:24
2003.09.29
Парадокс


6-96315
podonok
2003-07-31 05:29
2003.09.29
Чат


1-96241
Nikulin
2003-09-17 14:13
2003.09.29
Помогите разобраться и понять в чем я не прав...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский