![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Canada |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
Вот http://forum.vingrad.ru/topic-174701.html я почитал, но МеталФан был прав..У новичка (у меня) после прочтения - каша в голове.
Я это к тому, что вот я не использовал Try и Finally, а работал с переменной типа TStringList Как с обычным мемо. И все работает! А ведь THandle, еще и .Free использует! Меня как новичка интересует такие вопросы: 1) А что будет если не использовать эти Try и Finally?Т.е. если я на 100% уверен, что ошибки в коде не будет. 2) А вот без .Free я так понимаю, эта переменная типа ТСтрингЛист так и останется в памяти? 3) А можно .Free использовать без Try и Finally? |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
try/finally - это своего рода ремни и подушка безопасности. Последствия НЕ использования - можете представить сами. Вы не можете быть на 100% уверены.
Free удаляет объект (вызывает деситруктор). Если объект не удалять - он останется висеть до конца программы. Обычно это называют утечкой памяти. Это не очень страшо в клиентских программах (да, это - баг, это - плохо, но это терпимо), а для серверных - вот страшилка. Самое обычное правило просто: кто объект создал - тот его и удаляет. Если вы его создавали - вы и обязаны его удалить. Но, конечно же, из этого правила есть вполне очевидные исключения. Можно. Но ремней безопасности уже не будет. Рекомендую. Это сообщение отредактировал(а) CodeMonkey - 24.3.2009, 15:35 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
на 100% ни в чем нельзя быть уверенным. если ты думаешь, что уверен на 100%, значит ты что-то еще не знаешь и не учитываешь ;) и еще бы неплохо привести куски кода, чтобы было ясно, о чем речь, без захода по ссылке. -------------------- There are always someone smarter than you... |
|||
|
||||
| vladimir74 |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 28.11.2006 Репутация: нет Всего: 3 |
ничего не будет, пока не возникнет ошибка
да, но только до тех пор пока деструктор не решит ешо уничтожить. Например при закрытии программы можно Добавлено через 56 секунд
во Добавлено через 1 минуту и 42 секунды к пункту 3 ... можно, но не нужно... ;) --------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ. |
||||||
|
|||||||
| Canada |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 153 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
Кусок кода, это выйдет всю программу выкладывать.Т.е. я просил объяснить принцип работы, и вы это сделали на Отлично!. Дело в том, что у меня не было проблемы еще с этим. Но смысл я уже на практике понял. Спасибо вам огромное! Т.е. я ообще с TStringList раньше не работал..Спасибо!
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
TStringList тут как-бы вообще ни при чём. Это общие принципы/правила.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| THandle |
|
||||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
Попробуй два кода(самый примитив, что пришло в голову сейчас...) вне среды(не в Delphi, а просто в Windows):
|
||||
|
|||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
THandle, пример наглядный, попробовал...
Теперь стало понятно окончательно... |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
Есть такая коварная ошибка, которая может возникнуть где угодно и по коду и не скажешь что она именно тут может возникнуть. Завется она "Out of memory". Быть на 100% уверенным что этой ошибки не возникнет невозможно, ведь помимо твоей программы в ОС выполняется еще куча всего и знать заранее сколько кому нужно будет памяти и сколько вообще памяти на компе невозможно.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
![]()
|
| Правила форума "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. |