Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.048 c
4-1102419026
Cosinus
2004-12-07 14:30
2005.01.30
После запука программы NT-шная система уходит в глубокий даун?!


4-1102558572
Fedia
2004-12-09 05:16
2005.01.30
Отправка сообщения программе от ловушки сообщений


14-1105456159
Petrovich_
2005-01-11 18:09
2005.01.30
C++


1-1105966695
Mate_ru
2005-01-17 15:58
2005.01.30
Перенос слов


6-1100231043
Lingo
2004-11-12 06:44
2005.01.30
Password never Expired





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский