Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.22;
Скачать: CL | DM;

Вниз

МНОГА указателей...   Найти похожие ветки 

 
ArtemESC ©   (2006-10-04 19:42) [0]

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


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

garbage collector.


 
Джо ©   (2006-10-04 19:49) [2]

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

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


 
Zeqfreed ©   (2006-10-04 19:50) [3]

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


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

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


 
Джо ©   (2006-10-04 19:55) [5]

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


 
Ketmar ©   (2006-10-04 19:57) [6]

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


 
ArtemESC ©   (2006-10-04 20:45) [7]

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

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


 
Ketmar ©   (2006-10-04 20:50) [8]

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


 
ArtemESC ©   (2006-10-04 20:51) [9]

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


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

Abstract Synthax Trees.


 
default ©   (2006-10-04 21:26) [11]

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


 
Джо ©   (2006-10-04 21:29) [12]

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


 
TUser ©   (2006-10-04 21:39) [13]

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


 
ArtemESC ©   (2006-10-04 23:07) [14]

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

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

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


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

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

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


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

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


 
isasa ©   (2006-10-04 23:47) [17]

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


 
Джо ©   (2006-10-04 23:49) [18]

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

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


 
Джо ©   (2006-10-04 23:53) [19]

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;

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



Страницы: 1 вся ветка

Текущий архив: 2006.10.22;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
2-1159944460
parasolka
2006-10-04 10:47
2006.10.22
Где ошибка?


15-1159773469
laok
2006-10-02 11:17
2006.10.22
JVCL для Delphi 10


1-1157705880
Gena KAKAIN
2006-09-08 12:58
2006.10.22
Операции над чужим окном


4-1148422772
LiveSoft
2006-05-24 02:19
2006.10.22
Обратботка своего пункта меню


15-1159535108
DmitriyG
2006-09-29 17:05
2006.10.22
TurboPower