Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

try..except


Burn ©   (2013-01-17 14:54:00) 

стоит ли здесь вставлять блоки try..except?


procedure Tf_AdditionalFields.FormCreate(Sender: TObject);
var
 Field: TAdditionalField;
begin
 Field := TAdditionalField.Create;
 Field.Name := FN_COUNTRY_OF_ORIGIN;
 Field.LabelName := FLN_COUNTRY_OF_ORIGIN;
 Field.Type_ := FT_COUNTRY_OF_ORIGIN;
 Field.Purpose := FP_COUNTRY_OF_ORIGIN;
 AdditionalFields_AddField(Field);
 //
 Field := TAdditionalField.Create;
 Field.Name := FN_MANUFACTURER_WARRANTY;
 Field.LabelName := FLN_MANUFACTURER_WARRANTY;
 Field.Type_ := FT_MANUFACTURER_WARRANTY;
 Field.Purpose := FP_MANUFACTURER_WARRANTY;
 AdditionalFields_AddField(Field);
 //
 Field := TAdditionalField.Create;
 Field.Name := FN_ADULT;
 Field.LabelName := FN_ADULT;
 Field.Type_ := FT_ADULT;
 Field.Purpose := FT_ADULT;
 AdditionalFields_AddField(Field);
end;


bems   (2013-01-18 16:52:00) [1]

Спасибо, я не спрашивал почему не нужно использовать FreeAndNil


Игорь Шевченко   (2013-01-18 16:51:00) [2]


> ну например http://www.gunsmoker.ru/2009/04/freeandnil-free.
> html


http://www.nickhodges.com/post/Using-FreeAndNil.aspx


bems   (2013-01-18 16:18:00) [3]


> переписать как булеву функцию

это не решение. там перед ней еще код есть, кроме того она для фактического добавления может использовать что-нибудь вроде TList.Add


> зачем FreeAndNil ?

ну например http://www.gunsmoker.ru/2009/04/freeandnil-free.html


Игорь Шевченко   (2013-01-18 14:23:00) [4]

O'ShinW ©   (18.01.13 11:44) [9]

Автомат смени


O'ShinW   (2013-01-18 11:44:00) [5]


> Игорь Шевченко ©   (18.01.13 11:28) [8]

создали - не пригодилось - создали "взад" :)
на автомате, единообразно


Игорь Шевченко   (2013-01-18 11:28:00) [6]

O'ShinW ©   (18.01.13 09:37) [7]

зачем FreeAndNil ?


O'ShinW   (2013-01-18 09:37:00) [7]

AdditionalFields_AddField(Field); переписать как булеву функцию

if not(AdditionalFields_AddField(Field) ) then
 FreeAndNil(Field);


знайка   (2013-01-17 15:55:00) [8]

А программа умеет работать без филдов?


bems   (2013-01-17 15:51:00) [9]

если при исключении AdditionalFields_AddField гарантируется что поле не добавлено, то стоит стоит, как-то так

Field := TAdditionalField.Create;
try
 Field.Name := FN_COUNTRY_OF_ORIGIN;
 Field.LabelName := FLN_COUNTRY_OF_ORIGIN;
 Field.Type_ := FT_COUNTRY_OF_ORIGIN;
 Field.Purpose := FP_COUNTRY_OF_ORIGIN;
 AdditionalFields_AddField(Field);
except
  FreeAndNil(Field);
  raise
end;


clickmaker   (2013-01-17 15:12:00) [10]

> чтобы исключить утечку памяти

а причем тут утечка памяти? и где?


Сергей М.   (2013-01-17 15:10:00) [11]

Стоит если не уверен в невозможности исключений.
Не стоит если иначе.


Burn   (2013-01-17 15:03:00) [12]


> зачем?


чтобы исключить утечку памяти в случае, если при добавлении возникнет ошибка.


знайка   (2013-01-17 14:56:00) [13]

зачем?


Наверх

Титульная страница Поиск, карта сайта Написать письмо