DriveComboBox EInOutError

0

witam

przy zmianie DriveComboBox na stacje A w ktorej nie znajduje sie dysk, wywala mi komunikat o bledzie I/o 21.
probowalem tak:

oid __fastcall TForm1::DirectoryListBox1Change(TObject *Sender)
{
try
{
DriveComboBox1->DirList=DirectoryListBox1;
}
catch(EInOutError &E)
{
Application->MessageBox("W napędzie nie ma dyskietki lub inny błąd.", "Disk Error", IDOK);
// DriveComboBox1->ItemIndex=2; nie wiem czy to potrzebne ale probowalem dosłownie wszystkiego
}
}

pomimo proby przechwytu, dalej wywala komunikat o bledzie.
co wy na to???

0

byl rowniez sprawdzane

catch(...) i tez zima

0
	Oem = SetErrorMode(SEM_FAILCRITICALERRORS)
	// tu nie wywali okienka
	SetErrorMode(OEM)
0

probowalem teg co mi poradziles Oem = SetErrorMode(SEM_FAILCRITICALERRORS

jednak nic ciekawego z tego nie wyszlo, moze popelnialem bledy w skladni.

jednak chetnie sprobowalbym tego sposobu, ora zobaczyl jak działa w praktyce, jak masz gdzies gotowy kawałek kodu chetnie zobacze.

a teraz to co udało mi sie zrobic, wyszukac, dowiedziec. W taki oto sposob poradzilem sobie z tym problemem

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->OnException = AppException;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::AppException(TObject *Sender, Exception *E)

{

if (strncmp(E->Message.c_str(),"I/O error",9))
Application->ShowException(E);
else
{
ShowMessage("Brak dysku do odczytu");
DriveComboBox1->ItemIndex=1;
}
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1