Главная страница
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.06 c
1-1108742803
сомневающийся
2005-02-18 19:06
2005.03.06
Hint на DBCtrlGrid


1-1108912196
Kosald
2005-02-20 18:09
2005.03.06
О дате дня


1-1109155839
ТехникПТО
2005-02-23 13:50
2005.03.06
Загрузка картинок в TImage


6-1103882327
Lau
2004-12-24 12:58
2005.03.06
Зависание сокета при Send


14-1108057467
juice
2005-02-10 20:44
2005.03.06
Как в BCB работать с процедурным типом?