Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

МНОГА указателей...


ArtemESC ©   (2006-10-04 19:42:00) 

Пишу модуль - возникло очень много указателей, при чем некоторые из них указывает на структуры с другими... Очистка представляет собой достаточно сложный и путанный процесс - можно ли как то его упростить?


Джо   (2006-10-04 23:53:00) [1]

type
 IMyInterface = interface
 end;

 TMyClass = class (TInterfacedObject, IMyInterface)
 public
   destructor Destroy; override;
 end;

...

destructor TMyClass.Destroy;
begin
 ShowMessage ('Destroyed');
 inherited;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 Intf: IMyInterface;
begin
 Intf := TMyClass.Create;
end;

Ничего обнулять не нужно :)


Джо   (2006-10-04 23:49:00) [2]

> [17] isasa ©   (04.10.06 23:47)
> Джо ©   (04.10.06 23:16) [16]
> Тут вопрос возник.
> А какая разница, делать Intrf:=nil (Intrf.Release()), или
> Class.Free? Все равно следить ...

А зачем делать Intrf := nil? Это бывает нужно достаточно редко. Если ссылок на интерфейс не осталось, то, после выхода за пределы видимости он и сам обнулится.


isasa   (2006-10-04 23:47:00) [3]

Джо ©   (04.10.06 23:16) [16]
Тут вопрос возник.
А какая разница, делать Intrf:=nil (Intrf.Release()), или Class.Free? Все равно следить ...


Джо   (2006-10-04 23:16:00) [4]

А "работает" все благодаря счетчику ссылок, который есть у интерфейсов.


Джо   (2006-10-04 23:15:00) [5]

> [14] ArtemESC ©   (04.10.06 23:07)
> Джо ©   (04.10.06 21:29) [12]
> Не посоветуете ресурс какой, где четко описано, как это
> работает?

У Тенцера есть статья по интерфейсам, кажется. А вообще, любая приличная книжка по Delphi may help. В Хелпе тоже достаточно информации.


ArtemESC   (2006-10-04 23:07:00) [6]

default ©   (04.10.06 21:26) [11]
Это как?

Джо ©   (04.10.06 21:29) [12]
Не посоветуете ресурс какой, где четко описано, как это работает?

TUser ©   (04.10.06 21:39) [13]
Это не облегчает задачу..


TUser   (2006-10-04 21:39:00) [7]

Ну, строй дерево, хоть с указателями, хоть с объектами. В коде их будет не много.


Джо   (2006-10-04 21:29:00) [8]

Передалать записи в классы, а с классами работать через их интерфейсы :) И всех делов, не нужно за освобождением следить.


default   (2006-10-04 21:26:00) [9]

свалить на платформу где есть встроенная автоматическая сборка мусора


Ketmar   (2006-10-04 20:58:00) [10]

Abstract Synthax Trees.


ArtemESC   (2006-10-04 20:51:00) [11]

Ketmar ©   (04.10.06 20:50) [8]
Это что еще за штука?


Ketmar   (2006-10-04 20:50:00) [12]

тут, вообще-то, AST. которые можно отлично оформить классами.


ArtemESC   (2006-10-04 20:45:00) [13]

Вообще говоря все указатели находяться в одном классе...

 Пишу универсальный паскаль-парсер, который разбирает все в разобранные структуры - тут то и указатели, в силу универсальности...


Ketmar   (2006-10-04 19:57:00) [14]

>[5] Джо(c) 4-Oct-2006, 19:55
а я просто тихонько мечтаю о полноценном GC и пишу как обычно. %-)


Джо   (2006-10-04 19:55:00) [15]

Лично я вообще в последнее время предпочитаю работать с объектами только (ну, по возможности :) )через их интерфейсы. Помимо других прелестей — автоматическая очистка памяти и не нужны все эти finally с Free и FreeMem :)


ProgRAMmer Dimonych   (2006-10-04 19:50:00) [16]

Указатели - это Pointer?
Я, если честно, не представляю себе, зачем нужно действительно МНОГАуказателей. Подозреваю, что там и без них можно обойтись. Если вопрос в том, как, то исходник в студию.


Zeqfreed   (2006-10-04 19:50:00) [17]

а) Продумать архитектуру
б) Забить на очистку
в) Забить на сложный и путанный процесс
г) Забить на программирование
д) Продумать архитектуру


Джо   (2006-10-04 19:49:00) [18]

> Очистка представляет собой достаточно сложный и путанный
> процесс - можно ли как то его упростить?

Переписать, используй всякие контейнеры или механизмы наподобие класса TList с автоочисткой. Use OOP, dude ;)


Ketmar   (2006-10-04 19:48:00) [19]

garbage collector.


Наверх

Титульная страница Поиск, карта сайта Написать письмо