Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

О TList и функциях   Найти похожие ветки 

 
Pentium133 ©   (2004-10-13 11:54) [0]

Добрый день.

Такой вопрос к мастерам:

Если использую такой вариант реализации функции - ошибок нет:
function ReadList: TList;
begin
  Result:= TList.Create;
  //прочая инициализация
end;

вызов:
 List:= ReadList;

Но по логике приложения предпочтительнее делать так:
function ReadList: TList;
begin
  Result.Clear
  //прочая инициализация
end;


вызов:
 List:= TList.Create; //это в конструкторе
и при надобности:
 List:= ReadList;
И вот здесь AccessViolation...
Как мне правильно реализовать второй вариант?


 
Reindeer Moss Eater ©   (2004-10-13 12:02) [1]

function ReadList: TList;
begin
 Result.Clear
 //прочая инициализация
end;

А кто проинициализировал Result?
Санта?


 
ЮЮ ©   (2004-10-13 12:08) [2]

и при надобности вместо
List:= ReadList;
надо просто ReadList, где
procedure ReadList;
begin
 List.Clear // тот самый List, что в конcтрукторе
 //прочая инициализация
end;


 
Pentium133 ©   (2004-10-13 12:08) [3]

Но если во втором варианте писать Result:= TList.Create, не будет ли утечек памяти? Ведь на момент вызова List уже существует?


 
Reindeer Moss Eater ©   (2004-10-13 12:09) [4]

Ведь на момент вызова List уже существует?

А во Вселенной может существовать только один экземпляр TList?


 
Reindeer Moss Eater ©   (2004-10-13 12:10) [5]

function ReadList: TList;
begin
Result := существующий_экземпляр_TList;
Result.Clear
 //прочая инициализация
end;


 
Pentium133 ©   (2004-10-13 12:11) [6]


> ЮЮ ©   (13.10.04 12:08) [2]

Ваш вариант не подойте. Извените я сразу не сказал что ReadList это метод объекта. И кто когда его вызовет этот объект не знает. Он просто должен проинициализировать список.


 
Reindeer Moss Eater ©   (2004-10-13 12:13) [7]

Извените я сразу не сказал что ReadList это метод объекта.
А фиг ли мы обсуждаем код, которого не видим?


 
Pentium133 ©   (2004-10-13 12:14) [8]

Хм. Напрашивается такой вариант:
procedure ReadList(var lst: TList);
Думаю это будет правильно.
Судя по всему через функцию задуманно реализовать не удастся.


 
Pentium133 ©   (2004-10-13 12:17) [9]


> А фиг ли мы обсуждаем код, которого не видим?

"Не уверен не обгоняй"
Если сразу не понял вопроса чего тогда советовал?


 
Reindeer Moss Eater ©   (2004-10-13 12:19) [10]

А где я тебе что-либо советовал?


 
Amoeba ©   (2004-10-13 12:20) [11]


> Pentium133 ©   (13.10.04 12:17) [9]
>
> > А фиг ли мы обсуждаем код, которого не видим?
>
> "Не уверен не обгоняй"
> Если сразу не понял вопроса чего тогда советовал?

Так задавай вопрос так, чтобы он сразу был понят правильно.


 
Pentium133 ©   (2004-10-13 12:23) [12]

Давайте еще пофилосовствуем о "правильном вопросе"...
Вопрос был задан правильно, т.к. правильно заданный вопрос содержит в себе половину ответа и этот ответ я нашел сам. Все спасибо за косвенную помощь.


 
Reindeer Moss Eater ©   (2004-10-13 12:25) [13]

передавай привет Санте.



Страницы: 1 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.034 c
4-1096129821
sh@de
2004-09-25 20:30
2004.10.31
Поцесс с системной учюзаписью


14-1097767576
Поручик
2004-10-14 19:26
2004.10.31
FooBar2000


1-1097848708
greenrul
2004-10-15 17:58
2004.10.31
Определение языка системы.


4-1095952236
Mirror
2004-09-23 19:10
2004.10.31
Поиск файла


6-1092902393
Дмитрииий
2004-08-19 11:59
2004.10.31
Socket operation on non socket





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