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

Вниз

Как использовать в Delphi тип, объявленный внутри OLE объекта?   Найти похожие ветки 

 
Koster   (2004-05-24 15:41) [0]

Как использовать в Delphi тип, объявленный внутри OLE объекта?

Объект: ServerName.Class


var
Server: Variant;
begin
Server := CreateOleObject("ServerName.Class");
....

Server.Test2( структура );

....
Server := Unassigned;
end.


Процедура Test2 требует на вход переменную типа, объявленного в самом сервере
как ServerName.Type1 (это структура).
Надо заполнить поля этой структуры и передать процедуре.
Как это сделать?

1) как объявить переменную такого типа в Delphi?
2) или как создать вариантную переменную такого типа в Delphi?

Нужно что-то типа:

var
Server: Variant;
Struct: ServerName.Type1;
begin
Server := CreateOleObject("ServerName.Class");
....

Struct.b1 := 1;
Struct.b2 := 2;
Server.Test2( Struct );

....
Server := Unassigned;
end.


Тип: ServerName.Type1
структура (на VB):

Type Type1
   b1 As Boolean
   b2 As Byte
   b3 As Single
   b4 As Byte
   b5 As Byte
   b6 As Byte
   s1 As String
End Type


 
Nikolay M. ©   (2004-05-25 17:52) [1]

Через OleVariant?


 
Ломброзо ©   (2004-05-26 00:43) [2]

импортировать библиотеку типов (или там, tlibimp xxx.dll), посмотреть сгенерированный код струкуры, затем CtrlC, затем CtrlV, и отключить библиотеку типов?


 
Koster   (2004-05-26 14:35) [3]

Очевидно, какой-то комбинацией первого и второго.

Потому что если импортировать библиотеку типов, то тип-структура создается, но передается параметр интерфейсу через OleVariant.
Причем ни разу переменная типа структура не конвертируется в OleVariant (а принимается извне уже как готовый параметр типа OleVariant).
Так вот и вопрос - как же такой OleVariant создать... В лоб делать

var v: variant;
begin
 v.b1 := ...
 v.b2 := ..
end;

нельзя, т.к. v - еще не структура...
хорошо бы так:

var v: variant;
v1: TType1; // созданный в модуле импорта библиотеки типов
begin
 v1.b1 := ...
 v1.b2 := ..

 v := v1; // конвертировать!!!
end;

Нет ли простой функции в модуле Variants, делающие преобразование любой переменной в вариант?
Вроде по справке не нашел.



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

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

Наверх




Память: 0.47 MB
Время: 0.023 c
14-1108648630
Ilya___
2005-02-17 16:57
2005.03.06
подскажите, как можно щелчком на Label, открыть броузер с интерне


6-1104640261
modem3000
2005-01-02 07:31
2005.03.06
Apache 2 и DLL


14-1108675948
Гость
2005-02-18 00:32
2005.03.06
Возможно ли одновременно подключить


9-1102404567
Opanas
2004-12-07 10:29
2005.03.06
[GLScene] & 3DS


4-1106293891
AlexandrK
2005-01-21 10:51
2005.03.06
Как показать на панели задач ВСЕ ОКНА приложения