Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.007 c
15-1366662603
Юрий
2013-04-23 00:30
2013.10.06
С днем рождения ! 23 апреля 2013 вторник


15-1367129093
Neuro System
2013-04-28 10:04
2013.10.06
Помогите решить академические задачи


2-1358407010
Cobalt
2013-01-17 11:16
2013.10.06
Почему компилируется?


15-1366559274
UseSynergy
2013-04-21 19:47
2013.10.06
Ищу программистов для стартапа


2-1358365235
lordalexander
2013-01-16 23:40
2013.10.06
не могу понять почему ошибка




   Наверх