Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Посмотри debug view > CPU 30.10.06 12:00 Число просмотров: 1150
Автор: Cyril <sc> Статус: Member Отредактировано 30.10.06 12:02 Количество правок: 1
|
> Отлаживаю код на Delphi 7. Поставил точку останова до > вызова функции API ReadFile, следующая процедура -- > Win32Check, которая вызывает исключение, если булевое > значение в её единственном входящем параметре неистинно, к > примеру > Win32Check(hndl <> INVALID_HANDLE_VALUE). > Ну и ладно. Остановился в точке останова. Попробуй нажать ctrl+alt+c и в появившемся окне понажимать F8
>Нажал F8
> (построчная отладка), чтобы воткнуться в Win32Check, и > посмотреть на параметр, который пойдёт в эту функцию... > Фигассе, исключение вырабатывается ещё до захода в > Win32Check! может быть компилятор считает что выражение
hndl <> INVALID_HANDLE_VALUE всегда ложь и поэтому сразу генерит исключение
INVALID_HANDLE_VALUE = DWORD(-1) = LongWord(-1)
результат ReadFile это bool насколько я понимаю всегда >=0
(-1) < ReadFile поэтому компилятор решил оптимизировать этот участок
кода и сразу генерить исключение ;-) умный какой
Не факт что все именно так, это лишь одна из версий ;-)
Win32Check(hndl <> INVALID_HANDLE_VALUE).
> > Как такое может быть? Я в шоке. Причём исключение генерит > именно Win32Check, с его глупым сообщением "Call to OS > function failed".
|
|
|