Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-59077
Ag2002
2002-10-25 14:35
2002.11.18
подключение


14-59342
Карелин Артем
2002-11-01 10:25
2002.11.18
Делаю проги


14-59336
evgeg
2002-10-28 21:06
2002.11.18
АHТИHАУЧHАЯ РЕВОЛЮЦИЯ И МАТЕМАТИКА


3-59045
omar
2002-10-30 06:55
2002.11.18
Длительность транзакций


1-59272
iNew
2002-11-07 14:50
2002.11.18
Как лучше всего заменить все ‘*’ в строке на ‘%’, можно конечно





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский