Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизО 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.045 c