![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| midiar |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 19.10.2005 Репутация: нет Всего: нет |
Добрый день. Интересует вопрос о том какой код правильнее, вот три варианта:
1.
2.
3.
Это сообщение отредактировал(а) midiar - 23.10.2005, 18:57 |
||||||
|
|||||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Освобождать память нужно в любом случае. Знать бы еще что скрывается за точками, но раз это не известно, то второй.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| midiar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 19.10.2005 Репутация: нет Всего: нет |
А если q было создано нормально, а при создании c или t произошла ошибка?
|
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
И когда это при создании компонентов происходили ошибки? На моей практике не было такого еще.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| midiar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 19.10.2005 Репутация: нет Всего: нет |
В конструкторе ADO компонентов вызывается функция CreateADOObject, которая может генерить исключение. То есть теоретически трабл может быть.
|
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Попробуй создать TAdoConnection без предворительного Application.Initialize. midiar Я тоже задавался этим вопросом, но почему-то использую конструкцию 2. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
midiar
А если почитать как работает try....except....finale? |
|||
|
||||
| midiar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 19.10.2005 Репутация: нет Всего: нет |
Загадками изволите разговаривать. В этой теме загадку задал я
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Третий вариант хуже второго по след. причинам:
- в случае Exit не освободится память - в случае исключения в обработчике исключений Второй вариант лишен этих недостатков... Но он хуже первого варианта по причине возможности исключения в конструкторах, об этом уже тут говорилось... Поэтому среди предложенных мой выбор - первый вариант PS: проверять на nil перед вызовом Free не стоит, т.к. Free это делает сам:
PPS: теоретически возможны исключения в деструкторах -------------------- С уважением, г-н Посол. |
|||
|
||||
| midiar |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 19.10.2005 Репутация: нет Всего: нет |
Генерить исключеня в деструкторах - это моветон
Мне первый вариант тоже больше нравится |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |