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

Вниз

Поинтер на интерфейс   Найти похожие ветки 

 
elserpiente   (2007-06-13 15:10) [0]

Можно ли переменной-указатель (Pointer) указать поинтер интерфейса? и как с такой переменной можно потом прочитать интерфейс


 
Сергей М. ©   (2007-06-13 15:15) [1]


> Можно ли переменной-указатель (Pointer) указать поинтер
> интерфейса?


Можно.

MyPointerVariable := MyInterface;

Но не нужно.


> как с такой переменной можно потом прочитать интерфейс
>


Что значит "прочитать интерфейс" ?


 
elserpiente   (2007-06-13 15:20) [2]

ну что типа этого

var
 p: pointer;
 i: IMyInt;
...
i := TMyInt.Create;
p:= @i;

IMyInt(p).MyField := 0;


 
Сергей М. ©   (2007-06-13 15:23) [3]

А за каким лешим нужны эти хитромудрые преобразования ?

Почему переменную p не сделать типа IInterface ?


 
elserpiente   (2007-06-13 15:28) [4]

это нужно для хранении данных в TTreeView, а именно в TTreeNode.data


 
jack128 ©   (2007-06-13 15:33) [5]

elserpiente   (13.06.07 15:28) [4]
это нужно для хранении данных в TTreeView, а именно в TTreeNode.Data


Ну тогда лудше так:

var
 Intf: IUnknown;
begin
...
 TreeView1.Items[0].Data := Pointer(Intf);
 Intf._AddRef;
end;

begin
 ...
 IUnknown(TreeView1.Items[0].Data)._Release;
 TreeView1.Items[0].Data := nil;
end;


 
jack128 ©   (2007-06-13 15:34) [6]

jack128 ©   (13.06.07 15:33) [5]
begin
...
IUnknown(TreeView1.Items[0].Data)._Release;
TreeView1.Items[0].Data := nil;
end;


точнее
if TreeView1.Items[0].Data <> nil then
begin
IUnknown(TreeView1.Items[0].Data)._Release;
TreeView1.Items[0].Data := nil;
end;


 
elserpiente   (2007-06-13 15:50) [7]

угу, пасибо, разобрались ;)


 
elserpiente   (2007-06-13 15:57) [8]

а вообще може кто то сталкивался с проблемой удаления из TTreeNode данных по ссылке data? можно как-нибудь автоматизироваться этот процес?чтоб при удалении TreeNode данные тоже убивались


 
Сергей М. ©   (2007-06-13 16:00) [9]

А в чем проблема ?


 
jack128 ©   (2007-06-13 16:15) [10]

elserpiente   (13.06.07 15:57) [8]
а вообще може кто то сталкивался с проблемой удаления из TTreeNode данных по ссылке data? можно как-нибудь автоматизироваться этот процес?чтоб при удалении TreeNode данные тоже убивались


есть событие соответствующее. OnDeleting чтоли.. В нем и освобждай свои данные...


 
Romkin ©   (2007-06-13 16:25) [11]

И есть возможность написать свой потомок TTreeNode :)
В D6 и выше - OnCreateNodeClass есть.



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

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

Наверх




Память: 0.49 MB
Время: 0.024 c
2-1185128088
mefodiy
2007-07-22 22:14
2007.08.19
Почему GetCurrentPositionEx возвращает нулевые координаты


11-1166716930
fender
2006-12-21 19:02
2007.08.19
KOL/MCK и обыкновенные VCL компоненты и библиотеки


15-1185171911
question
2007-07-23 10:25
2007.08.19
програмист для ПО под виндоус из Москвы


3-1177683929
Ёжик
2007-04-27 18:25
2007.08.19
Право на IDENT_CURRENT


2-1184810860
dimaL
2007-07-19 06:07
2007.08.19
FireBird и компоненты вкладки Interbase