|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.09.2011, 23:29 | #11 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
и потом будет AV
можно сделать еще одну функцию по типу такой: Код:
Код:
да и в данном случае куда удобнее написать: Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
12.09.2011, 00:14 | #12 |
Форумчанин
Регистрация: 30.01.2009
Сообщений: 418
|
стой, можно же создавать листы через банальное свойство text
Код:
я тут еще пару тестов провел и выяснилось что ваще нельзя в функциях возращать объекты, иначе они зависают в воздухе => утечка памяти можно только через процедуры в качестве var посылать объект, имеющий прописанный адрес, и созданный вне процедуры. |
12.09.2011, 00:18 | #13 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Почему нельзя? В общем случае можно, только позаботиться об удалении не забыть. Точно так же как и var в процедуре
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 12.09.2011 в 00:20. |
12.09.2011, 00:23 | #14 |
Форумчанин
Регистрация: 30.01.2009
Сообщений: 418
|
var list:TStringList;
begin for i := 0 to 100000 do list:=TStringList.Create; вот интересно почему вот эта контрукция создает утечку. тут же по сути создаем объект и сразу его помещаем в адресованный лист. |
12.09.2011, 00:38 | #15 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Код:
вы создаете объект, но и уничтожить его должны вы.(аналогично и с тем что функция вернула объект, хотя тут через параметр как то более привычно) расмотрим что будет в данном случае: Код:
вторая итерация: создаем объект2, присваиваем ссылку на него переменной list, старая ссылка(на объект1) теряется(объект за нас никто не уничтожает). третья итерация: создаем объект3, присваиваем ссылку на него переменной list, старая ссылка(на объект2) теряется(объект за нас никто не уничтожает). ... Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
12.09.2011, 01:03 | #16 |
Форумчанин
Регистрация: 30.01.2009
Сообщений: 418
|
а вот такая контрукция, а основе методов из первого сообщения память не жрет Код:
=> все же можно без объявления переменных создать текстовый листок, оправить его в процедуру, и уже внутри процедуры уничтожить чтобы не было утечек. Код:
Последний раз редактировалось Lesha; 12.09.2011 в 01:12. |
12.09.2011, 01:14 | #17 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
вообще могу предложить такое: Код:
Код:
Цитата:
но надо думать, а нужен ли он там. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
12.09.2011, 01:30 | #18 |
Форумчанин
Регистрация: 30.01.2009
Сообщений: 418
|
воо)) ваще респект
вот только не понятно почему когда в процедуру передаем [1,4,6,8] то это массив, а когда в коде, то массиву это "множество" уже не присвоишь ибо множество. видимо особенности компилятора. |
12.09.2011, 01:36 | #19 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
так же при инициализации переменной так же можно(но локальные не имеют инициализации по обьявлению) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка наличия в базе на лету | BloodWizard | JavaScript, Ajax | 1 | 12.08.2010 19:34 |
AJAX выполнение Javascript на лету | Egych | JavaScript, Ajax | 0 | 29.05.2009 23:50 |
Запрос mysql - создать массив на лету. | iankov | SQL, базы данных | 0 | 24.01.2009 12:01 |
Изменение стилей окна на лету. | Ivan_32 | Win Api | 1 | 29.12.2008 09:53 |
Создание кнопок на лету | gabin | Компоненты Delphi | 2 | 11.05.2008 15:30 |