Форум: "Основная";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];
ВнизКак идеологически правильно? Найти похожие ветки
← →
deffer (2002-11-06 18:24) [0]Функция (мною написанная)
getObjectsByMask(mask:string):TStrings
Формирует список строк и возвращает как TStrings
ts:=TStringList.create;
.... // заполняем строками, соответствующими маске
result:=ts;
"Пользователи" данной функции использую результат только для отображения его в TListBox-ах (и прочих списках).
Кто должен разрушать созданный в моей функции список? Учитывая, что разрушать надо не перед завершением приложения, а как только объект(список) больше не нужен (сразу после заполнения listBox-ов)? Ну как-то неправильно, если разрушать будет та функция, которая вызывала getObjectsByMask. А как иначе -- не представляю...
← →
Marcus (2002-11-06 18:32) [1]Дело вкуса, на самом деле. Хотя мне больше нравится так:
ts:=TStringList.create;
try
getObjectsByMask(ts);
// что-то делаем, н-р, заполняем ListBox
finally
ts.Free;
end;
Конструкция try-finally гарантирует, что не будет утечек памяти, какие бы исключения не выскочили в процессе обработки строк
← →
down (2002-11-06 18:35) [2]можно возвращать не TStrings, а TStrings.Text:
ListBox.Items.Text := get...
← →
oomneeq (2002-11-06 19:11) [3]imho не заморачиваться заботами о разрушении можно не создавая обекты внутри функций.
в описаном случае можно передавать TStrings(TStringList) в процедуру параметром, а процедура соответственно предполагает наличие уже созданного объекта
getObjectsByMask(mask:string;Items:TStrings);
а вызвать так
getObjectsByMask(mask,ListBox.Items);
← →
Alex4444444444 (2002-11-06 19:30) [4]A ne luchshe
procedure BlaBla(mask: something; Dest: TStrings);
i potom
BlaBla(mask, ListBox.Items);
T.e., kto ego sozdaet, tot i razrushaet (esli voobshe nuzhno sozdavat").
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c