Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.10.06;
Скачать: CL | DM;

Вниз

try..except   Найти похожие ветки 

 
Burn   (2013-01-17 14:54) [0]

стоит ли здесь вставлять блоки 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;


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

зачем?


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


> зачем?


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


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

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


 
clickmaker ©   (2013-01-17 15:12) [4]

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

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


 
bems ©   (2013-01-17 15:51) [5]

если при исключении 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;


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

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


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

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

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


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

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

зачем FreeAndNil ?


 
O'ShinW ©   (2013-01-18 11:44) [9]


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

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


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

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

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


 
bems ©   (2013-01-18 16:18) [11]


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

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


> зачем FreeAndNil ?

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


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


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


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


 
bems ©   (2013-01-18 16:52) [13]

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



Страницы: 1 вся ветка

Текущий архив: 2013.10.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
15-1367219106
O'ShinW
2013-04-29 11:05
2013.10.06
Нарочно не придумаешь..


15-1366807381
O'ShinW
2013-04-24 16:43
2013.10.06
Способности человека. Летучая мышь / Смерш


15-1366883286
О-Сознание
2013-04-25 13:48
2013.10.06
Наглядная настройка параметров.


15-1363095630
О-Сознание
2013-03-12 17:40
2013.10.06
Трабла с директивой


15-1366835403
Юрий
2013-04-25 00:30
2013.10.06
С днем рождения ! 25 апреля 2013 четверг