Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

Вниз

видалення об'єкта Знайти схожі гілки


Серж   (2001-12-18 19:18) [0]

Видаляю об'єкт (роблю Free)
Як перевірити що об'єкт віддалений (перевіряю на nil - каже,
що покажчик визначено). Як бути ???



Anatoly Podgoretsky   (2001-12-18 19:29) [1]

Ну присв йому nil після видалення.
Тільки навіщо так робити, на обличчя повторне використання, краще писати так що б не було в цьому потреби.



nil   (2001-12-18 19:36) [2]

FreeAndNil (Object);



Серж   (2001-12-18 19:41) [3]

Ну це не зовсім "повторне використання"
Проблема в наступному:
Я роблю дизайнер звітів. Користувач може додавати до репорту різні елементи (bandи, lablи і т.д.). Те що лежить на звіті пишеться в tlist
Звичайно, можна видаляти і додавати компоненти.
Проблема з'явилася, коли видаляється банд. Роблю йому free - він видаляється і видаляє свої дочірні об'єкти.
Мені їх треба видалити з lista. Тому й виникло питання. Я хотів при видаленні банда перевірити які об'єкти пішли разом з ним і видалити їх з цього списку.
А в інших випадках я і привласнював nil.
Повинен же бути якийсь спосіб ???



Юрий Зотов   (2001-12-18 19:43) [4]

А навіщо взагалі перевіряти? Якщо Free було викликано й у своїй винятків не виникло, значить об'єкт віддалений і ніякі перевірки вже не потрібні.

Схоже, Anatoly Podgoretsky прав - логіка коду побудована не найкращим чином. Раджу звернути на це увагу, оскільки дуже часто такі речі є причиною прихованих і труднообнаружіваемих помилок.



Серж   (2001-12-18 19:48) [5]

Ну добре!! Спасибі всім!
Якщо навіть Ю.Зотов не знає способу - значить буду намагатися вирішити проблему іншим і, схоже, більш довгим шляхом: ((
Ще раз спасибі за увагу.



Юрий Зотов   (2001-12-18 19:52) [6]

Треба ж, різниця дорівнює 2 секундам ...

Тепер завдання зрозуміле. Один із способів такої. Породите свій менеджер від TComponent, а Ваш TList вставте в нього, як поле. Різниця в тому, що при вставці будь-якого компонента в звіт цей TComponent може викликати його метод FreeNotification і тому автоматично отримуватиме все повідомлення про видалення. Залишається тільки замістити його метод Notification, а у нього вже очищати посилання в TList.



Серж   (2001-12-18 19:57) [7]

> Юрій Зотов
Хитро! Гаразд, завтра спробую! Спасибі!



Anatoly Podgoretsky   (2001-12-18 20:25) [8]

В принципі не важливо як зробити, важливо що б будь-який об'єкт додавався і віддалявся сам зі списку. У цьому випадку проблема піде на корені.



сторінки: 1 вся гілка

Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.58 MB
Час: 0.025 c
3-21949
Відлюдник
2001-12-05 13:22
2002.01.08
Значення поточного запису


7-22418
Мікле
2001-09-20 09:06
2002.01.08
Терміново! Комп замість принтера.


7-22437
Парадокс
2001-09-25 18:48
2002.01.08
WAV


1-22107
Олександр
2001-12-19 01:45
2002.01.08
Як при запуску програми відразу показати поверх головної форми іншу?


6-22307
Левіафан
2001-10-12 12:54
2002.01.08
NMFTP - відстій !!!!





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська