![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
Здравствуйте. Кто-нибудь встречался с такой проблемой? А именно: есть на форме компонент ListBox1 и Button1, в глобальных переменных задаю указатель
Код:
Код:
Объясните, пожалуйста, почему так и как этого избежать. Заранее спасибо.
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
1)обьясни а зачем ты выделяешь память под TListBox (New(p);)
а затем присваиваешь ему адресс уже существуещего Бокса(p:=@ListBox1;)? 2)TListBox это класс имеющий свои собственные конструкторы/деструкторы и при динамической работе нужно работать с классами, при помощи конструкторов/деструкторов а ты пытаеешься освободить память так, как будто это просто тип данных(Dispose(p);) попробуй так: Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 13.03.2009 в 07:56. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 24.07.2008
Сообщений: 279
|
![]()
TListBox это и есть указатель, память под него выделять не надо.
Код:
Сказал и загрустил от бесспорности своей правоты.
Последний раз редактировалось 0nni; 13.03.2009 в 08:41. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
![]()
че вы постоянно спрашиваете, зачем указатель, зачем то, зачем сё - вам поставлен конкретный вопрос - на него и отвечайте, а не умничайте - человек немного не разобрался - ему надо помочь разобраться
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 24.07.2008
Сообщений: 279
|
![]()
Ок мб слишком резко начал, исправил.
Но он не недопонял а недоучил основы ооп. И решил работать в оо-й среде без необходимых знаний. Если дать ему ответ на вопрос - он ведь так всю жизнь делать и будет, а я считаю такие попытки над на корню рубить.
Сказал и загрустил от бесспорности своей правоты.
|
![]() |
![]() |
![]() |
#6 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
Я понимаю концепции ООП. А зачем я это делаю:у меня в проге 2 листбокса на разных формах, всего 3 операции(удалить все записи, удалить выделенные, обновить). Когда записей много(более 3000), то vcl подвисает. Чтобы этого избежать, все эти процедуры формирую в потоке методом Synchronize. Указатели использую затем, чтобы поток "понял", с каким компонентом ему работать, т.е. эти 3 процедуры полностью завязаны на указателях.
Скажу сразу: ВСЕ РАБОТАЕТ НОРМАЛЬНО. Собственно вопрос еще раз: КАК КОРРЕКТНО ВЫСВОБОДИТЬ ПАМЯТЬ УКАЗАТЕЛЯ ПРИ ЗАВЕРШЕНИИ ПРОГРАММЫ? смотреть мой пример кода в 1 посте. Про диспоуз понял. Но если я повторю весь код, но без выделенной строчки, как при завершении программы корректно высвободить память указателя p? Или компилятор высвобождает автоматически?
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 11.01.2009
Сообщений: 1,917
|
![]()
Немного теории о памяти в Delphi :
http://www.rsdn.ru/article/Delphi/memmanager.xml
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 28.09.2008
Сообщений: 344
|
![]()
3D Hunter, Ты немного не разобрался с динамическим распределением памяти.
New(var P:Pointer) Динамически выделяет память, размер которой определяется типом типизированного указателя Р, и возвращает указателю P адрес выделенной области памяти. New НЕ ВЫДЕЛЯЕТ ПАМЯТЬ УКАЗАТЕЛЯ. Код:
|
![]() |
![]() |
![]() |
#9 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
Все, понял. Работает. Спасибо всем за помощь!
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с указателями | Mango | Помощь студентам | 2 | 23.11.2008 10:33 |
Работа с указателями!!! | HKBD | Общие вопросы C/C++ | 1 | 06.10.2008 07:52 |
Глюки с указателями | _Инженер_ | Общие вопросы Delphi | 1 | 17.09.2008 20:20 |
проблема с указателями =\ | shad0w | Общие вопросы C/C++ | 9 | 09.12.2007 03:36 |
Проблема с указателями | novicer | Общие вопросы Delphi | 5 | 17.06.2007 00:21 |