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

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



Память: 0.46 MB
Время: 0.029 c
1-1108827395
AlexDid
2005-02-19 18:36
2005.03.06
IP-адрес компутера


4-1106691985
Iron Man
2005-01-26 01:26
2005.03.06
Событие перед уничтожением приложения


14-1108435828
Думкин
2005-02-15 05:50
2005.03.06
С Днем рождения! 15 февраля


1-1108674888
Morn Gil
2005-02-18 00:14
2005.03.06
Стиль XP


6-1104397819
MGWarlock
2004-12-30 12:10
2005.03.06
Проверка соединения




   Наверх