![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]зачем?