![]() |
|
|
![]()
|
|
| stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
Возможно глупый вопрос, но ума не приложу куда смотреть!
Программа выполняет долгую работу, (несколько суток). И вот на 5 часу работы она странно завершила работу. т.е. не выдала никакой ошибки , ничего, просто завершилась. Приложение многооконное, программа выключается при закрытии всех окон. Я с ней ничего не делал. за памятью следил (в списке процессов смотрел сколько памяти ест, на момент закрытия было порядка 20 Мб). Компьютер мощный. ПО-моему, ошибка во всяком случае должна была выскочить. Не подскажете что могло произойти? |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
посмотри в EventLog. в серверных виндах галка "уведомлять о сбоях" снята по умолчанию, так что падающее приложение только пишет в лог "ватсона" и в EventLog.
если нет, то вставляй подробный логгинг, отлаживайся. |
|||
|
||||
| stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
то есть такое возможно? что бы программа закрылась без ошибок? хотя в ней кода даже такого нету. (чтобы закрывалась?)
|
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
В винде свойство такое есть, закрывать зависшие процессы. А насчет твоей программы, здесь не телепаты, что бы судить, правильно у тебя написано программа или нет, может она 5 часов работает, а потом вызывает какую нибудь инструкцию, которая неправильно выделяет память и все - кирдык, винда такого не простит
Что бы знать где программа выскочила, делай логи, то есть после определенных функций или команд пиши время и действие в файл, а потом просматривай логи. -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
>>может она 5 часов работает, а потом вызывает какую нибудь инструкцию, которая неправильно выделяет память и все - кирдык, винда такого не простит
Очень похоже на это. работает около 3 часов, перелопатила 5000 элементов. После чего Access Violation at address 0000000032 . Т.е. я похоже пытался создать объект при помощи new но винда память не выделила, и я без проверки полез к какоу то элементу. Почему такое может произойти? На момент ошибки программа весит в оперативке 20Мб. Что вполне адекватно информации которую она хранит, т.е. утечек памяти быть не должно. (В пред версии была утечка, программа вылетела при размере 300Мб)))) Почему система может не выделить память? и занулит ли она указатель , если не смогла выделить память? |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
единственный вопрос, на который можно ответить. занулит. чаще всего такое бывает при вызове метода несуществующего объекта. может помочь - madExcept |
|||
|
||||
| Bima |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Опять те же грабли.
МЫ здесь не телепаты, что бы обсуждать гипотетический код на предмет ошибки.
если ты в цикле постоянно создаешь элементы и их удаляешь, то это не есть ГУД. Попробуй их создать при создании формы, а удалять в конце программы. Конечно я предвижу вопрос, что всякое может понадобиться в момент исполнения программы, и программа должна все выполнить, но создание элементов с помощью new не дает гарантии, что он создался ( если быть точне я не помню, как проверить создание данного элемента), в отличии от "сишного" оператора выделения памяти (типа allocmem) у которого можно проверить выделилась память или нет. Для примера код:
Я взял подпрограмму для выделения памяти, которую писал лет 5 назад. Сам алгоритм не важен, а важно, как идет выделение памяти и проверка выделения памяти. Анологично должно быть и в твоей программе. -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
||||
|
|||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Почему нельзя проверить? Вот что пишет тот же HELP Buildera:
По умолчанию, при ошибки выделении памяти new вылетает исключение Если использовать форму new(nothrow) - то исключения не будет, а при ошибке вернет NULL Кстати: я точно не проверял, но по-моему Builder по умолчанию делает как раз nothrow - т.е. без исключения, но я точно не помню. |
|||
|
||||
| Vyacheslav |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Bulder придерживается стандарта и соответсвенно форма new при ошибке выделения памяти генерит исключение. Ладно я, еще успел поработать на компиляторах "достандартной" эпохи, но сейчас то .... Тем не менее на собеседовании при приеме на работу 50 процетов кандидатов не видят в ниже следующем коде ничего криминального
Более того. Когда явно указываешь им на бессмысленность проверки, уверяют что ВСЕ И ВСЕГДА ТАК ДЕЛАЮТ. Добавлено @ 11:47
Этого не может быть, потому что быть не может. Если конечно Вы не промаскировали возникшее при этом исключение. Скорее всего, Вы обратили к объекту, который уже уничтожили или еще не создали -------------------- С уважением, Вячеслав Ермолаев |
||||||
|
|||||||
| stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
Ясно, спасибо. Теперь буду отлавливать все выделения памяти и обращения к нулевым указателямю
|
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Vyacheslav поясни свой код:
Насколько я понимаю, здесь выделяется массив размерностью size и указатель pchar указывает на этот массив. Всегда не в ладах был с этими указателями, поэтому хочу поточнее уловить этот момент. Я не знаю, что возвращает в данном случае операция new char[size], но по логике эта операция может вернуть адрес на первый элемент массива и он не будет равен 0. Или я не прав??? -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
смысл такой: оператор new выкидывает exception если система не смогла выделить память. И соответственно до второй строчки работа программы не дойдет.
А в если все пройдет нормально, то оператор new вернет указатель на первый элемент массива char размера size и проверка тем более не нужна. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
stmamont прекрасно все разъяснил без меня -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
теперь понял, спасибо
-------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| Sfairet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 11.1.2007 Репутация: нет Всего: нет |
По моему вариант с нулём не такой уж и безнадежный, во первых старые версии new возвращают именно 0 (до принятия стандарта), к томуже не каждый компилятор согласиться генерировать исключение bad_alloc, а также просто будет использовать вариант с 0
|
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Это как это? И кто его , компилятор, спрашивать будет? А вариант, уверяю Вас, безнадежный. Особенно, при собеседовании при преме на работу -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Sfairet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 11.1.2007 Репутация: нет Всего: нет |
Имелись ввиду компиляторы не совместимые со стандартом=)
Да я и не спорю что вариант с нулём большая редкость, но тем не менее при определенных обстаятельствах он не исключён=) |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Sfairet и Vyacheslav скажите, а будет ли работать такой код???
-------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
Bima, вот к этому и велось)
именно так и нужно отлавливать ошибку |
|||
|
||||
| Vyacheslav |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Вот так
все таки не стоит. Лучше по-аккуратнее
или хотя бы так
-------------------- С уважением, Вячеслав Ермолаев |
||||||
|
|||||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
набрал у себя в программе при создании потока следущее:
по сути дела, то же самое, но у меня ругается на строку: catch(std::exception ex) Что не так, где подвох??? -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| pandrew |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 27.3.2006 Репутация: 3 Всего: 3 |
Добавь #include <except.h>
Кроме того thr1 не будет видно вне скобок. Едва ли ты это хотел. |
|||
|
||||
| Bima |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Заработало. Vyacheslav писал, что лучше использовать:
Для создания потоков с помощью new это тоже применимо, или есть std, какой нибудь другой???
что значит не будет видно??? Я его создал в скобках, он отработал и убился. Приостанавливать и завершать экстренно мне его не нужно. -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
||||||
|
|||||||
| stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
если обобщить
|
|||
|
||||
| Vyacheslav |
|
||||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Это во-первых. Во-вторых, если Вы используете VCL, его разработчики как правило перехватывают первоначальные исключения и вместо них генерят свои с типом Exception. Так что, Ваш код должен выглядеть примерно так
В-третьих, абослютно не вижу смысла ловить исключения по месту. По месту стоит ловить их тогда, когда есть возможность что-то исправить. Здесь же ясно, что объект не создался(неважно по какой причине) и программу либо следует прекратить полностью, либо прекратить выполнение конкретного участка с выдачей информации. По этому я бы здесь исключение не ловил. А все сделал централизованно Вообще любая программа должна начинаться с организации обработки ошибок. Слава богу, разработчики VCL продумали это за нас. И я обычно делаю так. 1. Выкладываю ApplicationEvents, который использую для централизовааной обработки всех действий 2. Задаю обработчик исключений типа
здесь catch(...) к месту, потому что этот код не должен генерить исключение во вне. В коде я подменяю по возможности первичные исключения на свои
Ну и вся обработка в самом коде сводится к 1.Сами генерим исключение
2.Подменяем первоначалые на свои
-------------------- С уважением, Вячеслав Ермолаев |
||||||||||||
|
|||||||||||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
>смысл такой: оператор new выкидывает exception если система не смогла выделить память.
Значит в книге Архангельского ошибка? Там сказано, что просто вернется NULL, в случае не возможности выделить память через new. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Архангельского надо читатать с осторожностью -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Это почему. Не ужели автор допускает такие ошибки? Это конечно не в тему. Заранее пардон. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
И у Архангельского и в стандартном HELPе ошибки есть.
Нет в мире ничего совершенного. |
|||
|
||||
| Vyacheslav |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Потому что, для Архангельского - главное объем. Правда такие ошибки - верх некомпетентности. В конце концов если не со стандартом, то хотя бы с хелпом следовало ознакомиться повнимательнее
Только вот эта форма буде возвращать NULL
Обычные генерят exception -------------------- С уважением, Вячеслав Ермолаев |
||||||
|
|||||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Да ладно нападать на Архангельского. Не одна сотня программистов по его книгам начинала. Хотя конечно указанный прокол достаточно серьезный, но в общем понимании его книги очень и очень полезны.
|
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Вот-вот. А я то думаю, и чего это 50% кандидатов при собеседовании чуть до мигрени меня не доводят, убеждая, что new просто объязан возвращать NULL. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Vyacheslav, я не думаю, что это должен быть основной критерий отбора. Даже если кандидат в этом ошибается, это вовсе не значит, что он и в остальном полный 0.
Люди они разные, а программисты тем более |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
В большинстве случаев дело обстоит именно так. Это означает, что человек вообще не писал серьезных приложений, где обработка исключительных ситуаций, является одним из критических и важных для нормальной работы мест -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
К стыду своему признаюсь, что я почти нигде не перехватыфваю это исключение. Если не сработал new - происходит отработка на уровне Application - т.к. в 99% случаев это говорит о том, что дальше работать нельзя. За исключением соучаев, когда в какой-нибудь ветке требуются уж очень большие ресурсы, на которые реально может нехватить памяти. Если вылетает new с объектом размером 100 байт - значит где-то очень серьезная утечка. А заключать каждый new в блок try catch приведет уж к больно большому разрастанию кода. Правда я себя не считаю профессионалом - скорее плотный любитель. |
|||
|
||||
| Vyacheslav |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Угу. Потому что за Вас это делает VCL
Заключать каждый new в блок try catсh - обратная сторона той же некомпетентности. См предыдущий мой пост. Ловить нужно по возможности( подчеркиваю - по возможности) как можно дальше от того места, где исключение произошло. Но ловить обязательно. Вам ведь не не нравится, когда Windows выходит на синий экран. Так и с программой. Сработала или не сработала правильно программа, но в 95 процентах пользователь должен решать, хочет или нет он прекратить с ней работу. А для этого нужно очень аккуратно работать с исключениями -------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Согласен с этим на 100% Но после этого обсуждения я начинаю себя ощущать менее компетентным Хотя максимум усилий я прилагаю к повышению дуракоустойчивости программы, и уж конечно, указанный блок в функции Winmain у меня переделан и выдает сообщение по-русски. |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Vyacheslav, я пытался разобрать ваш пример по "полочкам", не вышло. Скорее всего знаний не хватает, или данных.
Вы не могли бы сделать простой пример (там ловятся централизовано исключения), где скажем так, выделяется память, математические операции(сложение делние без проверки на 0) и что нибудь еще. По возможности с коментариями и выложить этот пример здесь, на всеобщее обучение. Чем проще пример будет, тем легче его будет понять. Я всегда ловил исключения только "местно", но это пошло еще с программ DOS-их. Сейчас хочу отойти от этой привычки (можно сказать, вы убедили меня в этом). P.S. кстати ВСВ тоже учил по Архангельскому, потому, что на тот момент, эта была единственная книжка, которую я нашел (инета небыло). -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Выскажу еще свое мнение по поводу централизованного перехвата исключений.
В большинстве своем они нужны для отладки и для корректного сохранения данных. Ну ни как пользователю не поможет сообщение хоть по-русски хоть по-французски "Произошло деление на 0. Приложение будет закрыто". Перехватывать исключения нужно обязательно, но желательно в тех местах, откуда по возможности можно продолжить исполнение кода, пусть и с урезанным функционалом, типа "Извините, в программе произошла ошибка, данная функция недоступна, сообщите разработчику". Хотя VCL страдает избыточной любовью к исключениям, взять функции типа atoi - зачем генерить исключения в них лично мне не понятно, и там, естественно появляется обработчик с идиотской надписью"Вы ввели не число. Введите, пожалуйста число!" |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Угу. Человек работал со складом. Не вышло. Он сообшил об ошибке администратору и чтобы продолжить работу с други модулем этой же программы, получает сообщение "Приложение будет закрыто" Еще раз. У Вас Windows наверняка иногда выдает ошибки. И что после этого оно перегружается? -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Именно про такие случаи я и писал. Максимально сохранить возможность продолжать работу. Что зачастую невозможно при очень далеких перехватах исключения. Чем дальше тем лучше, конечно, но и перегибать не надо. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Почему с идиотской? Вот давайте на примере и посмотрим как я это сообщение обработаю, невзирая где в программе он располжено и как Вы допустим будете обрабатывать ваш беспроблемный atoi Вот простейший пример.
Прошу обратить внимание на следующий факт. Там где ошибка связана с неправаильным вводом(Button2Click), будет выдано сообщение. Причем абсолютно неважно, где был выброшено исключение. В данном пример две строчки в Button2Click . А их может быть 100, но программа поведет себя одинаково. А вот в Button1Click предположим эта же ошибка конвертации тоже возможна, но связана она не с вводом, а ошибкой в коде. Что я , как программист предпринимаю? Зная, что все причины , вызывающие исключения в этом коде не могут быть исправлены действиями пользователя, я их перехватываю и дальше посылаю свое. Программа поведет себя по другому. Она выведет ошибку , причем с именем файла и строки, где произошло исключение и спросит нужно ли завершить программу. Здесь, конечно, все немного утрировано, но смысл , я надеюсь, понятен. Добавлено @ 17:52 Ошибаетесь. Как раз возможно В моем предыдущем примере поставте сколько угодно кнопок, в из обработчиках сгенерите исключения и давите как Вам вздумается. Уверяю Вас, программа завершится только с Вашего разрешения. Причем, что удивительно, я каждое исключение не обрабатываю -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Убедили.
Я же и говорю, что я скорее любитель, чем профессионал - программирование занимаюсь в свободное от основной работы время. Я делаю немного по-другому... Обычно перехватчик таких исключению у меня немного ниже - на уровне главной формы, но в общем наши действия схожи. Ваш метод мне нравится больше. Век живи - век учись. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |