Главная страница
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.026 c
15-1185175924
Nic
2007-07-23 11:32
2007.08.19
Нужно покупать хорошие блоки питания


15-1184638669
Slider007
2007-07-17 06:17
2007.08.19
С днем рождения ! 17 июля 2007 вторник


2-1185519885
Надежда
2007-07-27 11:04
2007.08.19
Региональные настройки


15-1184667005
pavel_guzhanov
2007-07-17 14:10
2007.08.19
Умер Михаил Кононов


1-1181557452
Углук
2007-06-11 14:24
2007.08.19
Скрытие окна не работает