Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизКак присвоить типу OleVariant адресс процедуры? Найти похожие ветки
← →
oleg_SYS © (2005-03-02 20:18) [0]Мне необходимо через COM-объект выловить некоторые события. Но при попытке присвоить этим параметра адресса процедур, компилятор выдаёт ошибку Incompatible types. Вот пример:
procedure MyProcedure;
begin
ShowMessage(":)");
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ptrAddr: Pointer;
ov: OleVariant;
begin
ptrAddr := @MyProcedure;
ov := ptrAddr;
end;
← →
Набережных С. © (2005-03-02 20:41) [1]
> oleg_SYS © (02.03.05 20:18)
Ни-и-че не понял:( А нормальным языком изложить все это никак нельзя? Ну а несовместимость типов - все правильно, OleVariant принимает только OLE-совместимые типы, а Pointer к таковым не относится.
← →
oleg_SYS © (2005-03-02 20:53) [2]Набережных С., например у объекта IHTMLDOcument2 есть property:
property onreadystatechange: OleVariant read Get_onreadystatechange write Set_onreadystatechange;
тип - OleVariant. Мне необходимо его выловить, чтобы узнавать, когда юзер перешёл на новую страницу или нажал кнопку Refresh.
← →
Набережных С. © (2005-03-02 21:56) [3]
> oleg_SYS © (02.03.05 20:53) [2]
Процедура тут не причем. Туда нужно передать интерфейс объекта, который и будет обрабатывать факт события. Т.е. при событии будет вызываться метод этого объекта. Какой нужен интерфейс в данном случае, я не знаю, никогда с ним не работал.
← →
Erik1 © (2005-03-03 12:37) [4]А вобще можно, что угодно запихать куда угодно. Для этого есть приведение типов. Или вобще непрямую Move писать.
ov := Integer(@MyProcedure);
Еще прикол:
Var
a: Boolean;
begin
Move(77, a, SizeOf(Byte));
end;
← →
Digitman © (2005-03-03 12:45) [5]
> через COM-объект выловить
это как ?!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c