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

Вниз

OLEVariant   Найти похожие ветки 

 
MixAnOL ©   (2006-09-17 20:15) [0]

Здарово всем!

Есть OLE сервер с событиями, есть событие с параметром widestring. Для тестирования создал клиента, импортировал библиотеку типов для моего сервера. В полученной юните у этого события параметр уже имеет тип OleVariant - почему так происходит?

И как в клиенте получить строку из этого OleVariant??

Что ни пробоваль - получается пустая строка....
Сервер тестировал пошагово, проверял какое значение уходит как параметр...


 
MixAnOL ©   (2006-09-17 20:23) [1]

в дополнение, с помощью VarType определил, что тип у параметра varByRef+varOleStr...
как достать эту строку? что-то в голову ни чего путного не лезет...


 
Percent   (2006-09-17 22:36) [2]

widestring

Тут не всякий "программист", пишущий на Delphi, знает про этот тип. А ты хочешь, чтобы все клиенты твоего OLE сервера об этом типе знали...


 
oxffff ©   (2006-09-17 22:40) [3]

varOleStr Reference to a dynamically allocated UNICODE string.


 
oxffff ©   (2006-09-17 22:49) [4]

Вот тебе пример работы с varOleStr or varbyref
var a:OleVariant;
   b:pWideString;
   c:TVarData;
   d:WideString;
begin
d:="423dasdas4";
b:=@d;
TVarData(a).VType:=varOleStr or varbyref;
TVarData(a).VAny:=b;
showmessage(a); на экране 423dasdas4


 
MixAnOL ©   (2006-09-18 11:02) [5]

TVarData интересная вестчь... но мне не помогла...
может из-за того, что строка передается по ссылке, а событие у меня генерится в процедуре и ссылка на локальную переменную? На событиях OLE требует обязательно указатель, а не значение в параметрах...
Вот и не пойму, как мне делать ссылку правильной..или еще что-то...


 
oxffff ©   (2006-09-18 11:31) [6]

Я написал пример, как устроен varOleStr or varbyref.
Это двойной указатель на строку.

Напиши с кодом, что тебе непонятно.


 
MixAnOL ©   (2006-09-18 13:55) [7]

да похоже у меня собака в другом месте порылась... косяк был в реализации интерфейса.

На счет TVarData: а как мне передать record в OLEVariant?


 
oxffff ©   (2006-09-18 15:33) [8]

Как я могу тебе ответить, если я не знаю, что в чем разрабатывается.
Могу тебе сказать, что сделать можно.


 
Сергей М. ©   (2006-09-18 16:17) [9]


> как мне передать record в OLEVariant


как varArray


 
oxffff ©   (2006-09-18 19:10) [10]

Если так, тогда можно и так varbyte+varbyref



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

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

Наверх




Память: 0.49 MB
Время: 0.038 c
2-1160821158
Sanya_BBB
2006-10-14 14:19
2006.10.29
Как преобразовать double к string ?


11-1136150719
Arberes
2006-01-02 00:25
2006.10.29
Ошибки....


2-1161019593
DROWSY
2006-10-16 21:26
2006.10.29
SQL?


15-1160404053
Галинка
2006-10-09 18:27
2006.10.29
Как сделать на MS VC++


1-1158322098
SPACE!!
2006-09-15 16:08
2006.10.29
Хранение графических ресурсов ..