Форум: "Основная";
Текущий архив: 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