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

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



Память: 0.47 MB
Время: 0.027 c
15-1160494016
Cyrax
2006-10-10 19:26
2006.10.29
Windows XP. Синий экран смерти


3-1157278541
Алексей Петухов
2006-09-03 14:15
2006.10.29
Grid index out of range


2-1160760529
anton773
2006-10-13 21:28
2006.10.29
фокус ввода


2-1161017861
WINNT
2006-10-16 20:57
2006.10.29
Трассировка кода


2-1160997598
Volodya_
2006-10-16 15:19
2006.10.29
TImage




   Наверх