Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.10.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.003 c
6-1269002359
eu1bc
2010-03-19 15:39
2013.10.06
Компоненты TNMMsg и TNMMsgSer


2-1358661812
N.Cage
2013-01-20 10:03
2013.10.06
Как убрать символы переноса в ячейке StringGrid


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


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


2-1358341960
McLotos
2013-01-16 17:12
2013.10.06
Разбросать результат SQL-запроса по переменным





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский