|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.08.2011, 15:29 | #1 |
Форумчанин
Регистрация: 24.02.2010
Сообщений: 148
|
Как обработать тип Variant ?
Использование протокола SOAP импортирую (http://api.a1agregator.ru/api.wsdl)
делаю аpi.pas прикручиваю к основной программе и все гуд кроме вот чего у некоторых функциях возвращаемое значение типа Variant и я не знаю как с ним бороться уже неоднократно гуглил этот тип но все никак не пойму как вытащить ответ с функции в текст ! мне кажется что я неправильно что то делаю может импорт неправильно провожу у меня delphi 2007 если кто знает подскажите заранее большое спасибо! маленький пример того как я все реализовую: Код:
а в ответ функции ShowBasicVariantType() я получаю varVariant или varNull. сама функция ShowBasicVariantType() приведена ниже: Код:
Последний раз редактировалось Stilet; 29.08.2011 в 17:12. Причина: неполное описание |
29.08.2011, 15:30 | #2 |
Форумчанин
Регистрация: 24.02.2010
Сообщений: 148
|
листинг аpi.pas
___________________________________ ___________________________________ _________________ Код:
Последний раз редактировалось Stilet; 29.08.2011 в 17:13. |
29.08.2011, 16:37 | #3 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
getCountries, судя по множ.числу в названии ф-ции, возвращает список значений. Этот список вполне вероятно представлен динамическим или вариантным массивом (второе более вероятно).
Отсюда видно направление куда копать - в сторону VarArrayDimCount, VarArrayLowBound, VarArrayHighBound. |
29.08.2011, 17:05 | #4 |
Форумчанин
Регистрация: 24.02.2010
Сообщений: 148
|
спасибо за ответ коллега
mss если не затруднит можно привести пример такой реализации !
я реализовал так: var I: Byte; begin I:= VarArrayDimCount((HTTPRIO1 as ApiPortType).getCountries); If I<>0 then MessageDlg( 'размерность массива:'+ IntToStr(I), mtInformation, [mbOk], 0) else MessageDlg( 'переменная не являеться Variant-масивом', mtInformation, [mbOk], 0); получаю 1 то-есть одномерный массив но как из него строки вытащить ? Последний раз редактировалось fucil; 29.08.2011 в 17:31. |
29.08.2011, 17:21 | #5 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Код:
|
29.08.2011, 18:00 | #6 |
Форумчанин
Регистрация: 24.02.2010
Сообщений: 148
|
Да я тоже так написал
да я точно так же сделал но только хотел сразу вывод в мемо сделать а он мне ясен пень ошибку ! Проблема сообственно в том как перевести в строку.
код: ____________________ Код:
raised exception class EVariantTypeCastError with message 'Could not convert variant of type (ArrayVariant) into type (String)'. Process stopped. Use step or Run to continue Последний раз редактировалось fucil; 29.08.2011 в 18:11. |
29.08.2011, 18:02 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
ListBox1.Items.Add(VarToStr(Countri es[i]);
Скобки то посчитай
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
29.08.2011, 18:28 | #8 |
Форумчанин
Регистрация: 24.02.2010
Сообщений: 148
|
Смысл не в скойбках а в типах
он не может конвертнуть ArrayVariant в string ПОМОГИТЕ ПОЖАЛУЙСТА !
|
29.08.2011, 19:36 | #9 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Ну так выясни не является ли Countries[i] таким же вариантным массивом как и Countries !
|
30.08.2011, 00:32 | #10 |
Форумчанин
Регистрация: 24.02.2010
Сообщений: 148
|
mss чет я не пойму что и как !
mss помоги реализовать вывод c этого вариантного массива а TListBox или Memo. А то я чет я все никак не пойму что к чему я ещё не особо силен в программировании заранее спасибо !
Я пока погуглю если будит минутка ответь ! Последний раз редактировалось fucil; 30.08.2011 в 10:36. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Variant как параметр по умолчанию | Gregor | Общие вопросы Delphi | 4 | 06.05.2011 11:15 |
Тип Variant | Дэкан1 | Помощь студентам | 1 | 21.05.2010 20:31 |
тип Variant | Михаил Юрьевич | Общие вопросы Delphi | 3 | 31.01.2008 09:05 |
как variant из текста преобразовать в булин? | Deceased | Общие вопросы Delphi | 10 | 18.12.2007 10:24 |