Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизЕсли мы создаём несколько TStringList ов, то надо делать один Найти похожие ветки
← →
Conduct (2005-01-08 04:00) [0]блок try finally, или три ?
← →
Kerk © (2005-01-08 04:02) [1]три
← →
Kerk © (2005-01-08 04:03) [2]если StringList"ов три...
иначе четыре, если их четыре.
...
← →
Kerk © (2005-01-08 04:03) [3]а вообще от ситуации зависит.. я б один блок сделал. :)
← →
jack128 © (2005-01-08 04:05) [4]Ну не знаю.. Меня такое кол-во вложеныых блоков напрягает.. Я предпочитаю так писать:
sl2 := nil; sl3 := nil;
sl1 := TStringList.Create;
try
sl2 := TStringList.Create;
sl3 := TStringList.Create;
finally
sl1.Free; sl2.Free; sl3.Free;
end;
← →
jack128 © (2005-01-08 04:07) [5]Так вероятность возникновения исключения в деструкторе stringlist"а стремится к нулю, то имхо нормальный подход..
← →
Conduct (2005-01-08 04:08) [6]А я один делал. Ну, ладно. Три, так три.
← →
Conduct (2005-01-08 04:12) [7]
> jack128 © (08.01.05 04:05) [4]
> Я предпочитаю так писать:
> sl2 := nil; sl3 := nil;
А зачем nil ?
← →
Kerk © (2005-01-08 04:14) [8]
> А зачем nil ?
так как блок finally выполнится в любом случае, независимо от того были ли созданы листы, он присваивает им нил.. чтоб с Free проблем не было в случае их не создания
← →
Conduct (2005-01-08 04:27) [9]
> Kerk © (08.01.05 04:14) [8]
> так как блок finally выполнится в любом случае, независимо
> от того были ли созданы листы,
А разве они в вашем коде могут быть не созданы ?
← →
Kerk © (2005-01-08 04:28) [10]
> А разве они в вашем коде могут быть не созданы ?
могут.. если в процессе из создания ошибка возникнет
← →
Conduct (2005-01-08 04:36) [11]
> Kerk © (08.01.05 04:28) [10]
>
> > А разве они в вашем коде могут быть не созданы ?
>
> могут.. если в процессе из создания ошибка возникнет
А какая может возникнуть ошибка в приведённом вами коде ?
← →
Kerk © (2005-01-08 04:38) [12]
> А какая может возникнуть ошибка в приведённом вами
> коде ?
> sl2 := TStringList.Create;
> sl3 := TStringList.Create;
эти строки не обязаны выполняться... ексепшен может вылезти какой-нибудь.. нехватка ресурсов итд
← →
Conduct (2005-01-08 04:53) [13]
> эти строки не обязаны выполняться... ексепшен может вылезти
> какой-нибудь.. нехватка ресурсов итд
А откуда тут может взяться эксэпшн ?
← →
Kerk © (2005-01-08 05:33) [14]
> А откуда тут может взяться эксэпшн ?
Издеваешься?
← →
Conduct (2005-01-08 06:07) [15]
> Kerk © (08.01.05 05:33) [14]
>
> > А откуда тут может взяться эксэпшн ?
>
> Издеваешься?
Почему ? Просто спрашиваю. По-моему неоткуда ...
← →
Kerk © (2005-01-08 06:09) [16]Conduct (08.01.05 6:07) [15]
внутри TScringList.Create ошибки быть не может?
← →
Conduct (2005-01-08 06:25) [17]
> Kerk © (08.01.05 06:09) [16]
> Conduct (08.01.05 6:07) [15]
> внутри TScringList.Create ошибки быть не может?
Откуда ? В чём ошибка то ?
← →
Kerk © (2005-01-08 06:27) [18]
> Откуда ? В чём ошибка то ?
в ДНК
← →
Conduct (2005-01-08 06:40) [19]
> Kerk © (08.01.05 06:27) [18]
>
> > Откуда ? В чём ошибка то ?
>
> в ДНК
Ну, теперь то ты наконец понял, что nil там был не нужен ?
← →
Kerk © (2005-01-08 06:42) [20]Conduct (08.01.05 6:40) [19]
О, мля... орех... :)))))))))))))))))))))))))
← →
VMcL © (2005-01-08 10:03) [21]>>jack128 © (08.01.05 04:05) [4]
Тогда уж так, ИМХО:SL1 := TStringList.Create;
SL2 := TStringList.Create;
SL3 := TStringList.Create;
try
// do something with SL1, SL2, SL3
finally
SL3.Free;
SL2.Free;
SL1.Free;
end;
Но лучше так не делать всё-таки. Не убудет, если написать три try-finally, а не один.
>>Conduct (08.01.05 06:40) [19]
Нужен.
← →
jack128 © (2005-01-08 15:11) [22]VMcL © (08.01.05 10:03) [21]
не-а. Вероятностью исключения при создании листов не стоит принебрегать. Все таки при этом память запрашиваются, а её может и не хватать..
← →
VMcL © (2005-01-08 16:54) [23]>>jack128 © (08.01.05 15:11) [22]
Тьфу, блин. Написал совсем не то, что хотел. Вот:SL1 := nil;
SL2 := nil;
SL3 := nil;
try
SL1 := TStringList.Create;
SL2 := TStringList.Create;
SL3 := TStringList.Create;
// do something with SL1, SL2, SL3
finally
SL3.Free;
SL2.Free;
SL1.Free;
end;
Но опять же: лучше так не делать. Не убудет, если написать три try-finally, а не один.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.044 c