Главная страница
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.029 c
15-1184777368
Tirael
2007-07-18 20:49
2007.08.19
хранить ли видеоколлекцию


15-1185246228
Pazitron_Brain
2007-07-24 07:03
2007.08.19
Ружье в Денди


5-1160122325
BadTester
2006-10-06 12:12
2007.08.19
Имеется задача pеализовать выдвижную панель на экpане


15-1185285507
TruePunk
2007-07-24 17:58
2007.08.19
рыбашка олимпиады 80


2-1185473507
zep
2007-07-26 22:11
2007.08.19
InvalidPointer