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

Вниз

oleVariant -> pWideChar   Найти похожие ветки 

 
XmeD   (2005-01-17 14:47) [0]

Доброе время суток! Помогите пжл с таким преобразованием.
Работа с Lotus Notes через Ole обьекты. Переменная типа OleVarinat получает все имена полей в документе в виде одной строки, а как потом эту строку в удобочитаемую преобразовать ненаю??? пытаюсь через OleStrToString пишет что надо pWideChar.
Заранее благодарен.


 
Digitman ©   (2005-01-17 15:38) [1]

var
 src: Olevariant
 dst: string;

...

dst := src;

ы ?


 
XmeD   (2005-01-17 15:47) [2]

Оно то канечно всё карашо, НО. Переменной Fields(OleVariant) присваевается значение какоето странное, что в програме генерится ошибка: EVariantTypeCastError.
 Could not convert variant of type (Array OleStr) into type (String).


 
Digitman ©   (2005-01-17 16:01) [3]


> XmeD   (17.01.05 15:47) [2]


репу-то почеши малясь) .. как можно черт-те какой массив (цитирую - Array OleStr) конвертировать непонятным образом в строку ?


 
XmeD   (2005-01-17 16:21) [4]

Ты пойми, в этом-то и загвостка, что прога не знает что это масив, изначально это просто переменная типа ОлеВариант, а пасём: КАК можно с ней работать как с масивом?


 
XmeD   (2005-01-17 16:46) [5]

А пытаюсь работать с переменной Fields как с масивом, то матюкается: Variant or safe array index out of bounds


 
palva ©   (2005-01-17 16:50) [6]

А если посмотреть вариантную переменную, массив ли это, узнать количество индексов, границы индексов - на всё же функции имеются.


 
DiamondShark ©   (2005-01-17 16:54) [7]

Что для этой переменной возвращают функции
VarArrayDimCount
VarArrayLowBound
VarArrayHighBound
?


 
XmeD   (2005-01-17 17:24) [8]

> DiamondShark ©   (17.01.05 16:54) [7]


Вот такие результаты

VarArrayDimCount=1
VarArrayLowBound=0
VarArrayHighBound=0


З.Ы.
Может есть идеи что такое и как его есть "Array OleStr"


 
Набережных С.   (2005-01-17 18:02) [9]

>XmeD   (17.01.05 17:24) [8]
Это массив WideString с одним элементом. Работать примерно так:
var
 n: integer;
 begin
   for n:=VarArrayLowBound(V, 1) to VarArrayHighBound(V, 1) do
     ShowMessage(V[n]);
 end;


 
palva ©   (2005-01-17 18:08) [10]

Я не знаю в чем дело. Нужно смотреть, что лежит в поле TVarData(v).VType, то есть какой тип лежит внутри вариантной переменной. Если там единичный бит $2000, то это массив. Если там лежит $0009, то это IDispatch, то есть некоторый объект. Kак с ним работать, надо смотреть в TLB. Может быть как нибудь так: v["FieldName1"].Value


 
XmeD   (2005-01-18 09:14) [11]


>
> Набережных С.   (17.01.05 18:02) [9]

  Да эта переменная получается у меня масивом OleStr с одним элементом и с индексом 0.

Кстати в этом и была загвозка - я не подумал что начальный индекс 0. Спасибо DiamondShark © за функции,очень помогли в понимании своей глупости.

З.Ы. Вапрос к

> palva ©   (17.01.05 18:08) [10]

может и чайниковский, но: как это реализовать в коде?

З.Ы. Бальшое пасибо всем кто памог, и если комута понадобиться помощ по Lotus мыльте на xmed@ukrpost.net памагу чем смагу.


 
palva ©   (2005-01-18 11:02) [12]

А что реализовать?

Надо из главного меню Import Type Library или Import ActiveX Control в зависимости от того как организована библиотека. Получившийся файл <что-то там>_TLB.pas нужно присоединить к проекту. Получится unit, который можно использовать для раннего связывания или изучить для позднего связывания.

Еще, если ActiveX, то его можно установить на палитру компонентов.


 
XmeD   (2005-01-18 11:14) [13]


> palva ©   (18.01.05 11:02) [12]
> А что реализовать?


Я наверно просто многое не знаю или не понимаю, но я спрашиваю как реализовать:


> palva ©   (17.01.05 18:08) [10]
> Я не знаю в чем дело. Нужно смотреть, что лежит в поле TVarData(v).VType,
> то есть какой тип лежит внутри вариантной переменной. Если
> там единичный бит $2000, то это массив. Если там лежит $0009,
> то это IDispatch, то есть некоторый объект. Kак с ним работать,
> надо смотреть в TLB. Может быть как нибудь так: v["FieldName1"].Value


?????


 
palva ©   (2005-01-18 13:30) [14]

> ?????
Ну здесь я написал, как определить, какой тип содержит вариантная переменная v. Нужно проверить значение TVarData(v).VType. Убедиться, что это массив, посмотреть тип элементов массива.



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

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

Наверх




Память: 0.5 MB
Время: 0.052 c
6-1100434704
dredd
2004-11-14 15:18
2005.01.30
включение отключение LAN в win2k


4-1102632284
vaska
2004-12-10 01:44
2005.01.30
keyboard


3-1104164186
juice
2004-12-27 19:16
2005.01.30
TQuickReport


8-1097922688
GlavBOTan
2004-10-16 14:31
2005.01.30
Большой Bitmap и маленький A4 (или любой другой)


14-1105429646
Sergey13
2005-01-11 10:47
2005.01.30
Новое платежное поручение. Есть у кого?