Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.015 c
4-1172921349
buben
2007-03-03 14:29
2007.08.19
MainMenu1 нажатие кнопки в меню


15-1184749301
Коллер
2007-07-18 13:01
2007.08.19
веб 2.0 и доткомы


2-1184704624
DenIK
2007-07-18 00:37
2007.08.19
Ошибка...помогите


2-1185565559
sproot
2007-07-27 23:45
2007.08.19
как сделать две равноправные формы?


2-1185355218
vegarulez
2007-07-25 13:20
2007.08.19
Как обновить TButton внутри TPanel`a?




   Наверх