Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как передать массив строк в VB? 
:(
    Опции темы
dead_ricky
Дата 12.7.2004, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 4.4.2002

Репутация: нет
Всего: 1



Как передать массив строк в VB?

Есть такой код сервера (С++):

Код
STDMETHODIMP CSomeManObj::EnumSome(VARIANT* psaSome)
{
VARIANT         theArray;
SAFEARRAY*      pSA;
SAFEARRAYBOUND  bound[1];
CComBSTR        bstrSomes[2] = {L"Element number 1", L"Element number 2"};

bound[0].lLbound    = 0;
bound[0].cElements  = 2;
pSA = SafeArrayCreate(VT_BSTR, 1, bound);
for (int i = 0; i < 2; i++)
 SafeArrayPutElement(pSA, (LONG*)&i, bstrSome[i]);
VariantInit(&theArray);
theArray.vt  = VT_DISPATCH | VT_BYREF;
theArray.parray = pSA;
VariantCopy(psaSome, &theArray);

return S_OK;
}


и такой код клиента (VB):

Код

Sub GetSomes()
   Dim Somes(0 To 1) As String
   Dim o As New SomeManObj
   o.EnumSome (Somes)
   MsgBox Somes(1)
End Sub


Подскажите плз что тут не так , и как надо правильно.
Заранне благодарен.
PM MAIL   Вверх
Fantasist
Дата 13.7.2004, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Код сервера твой? Покажи тогда и IDL этого метода. Как я понимаю, подразумевается, что psaSome - это retval. Я просто Basic не знаю, я только помню, что там все на variant'ах. Поэтому я бы попробывал так:

Код

Sub GetSomes()
  Dim o As New SomeManObj
  Somes  = o.EnumSome()
  MsgBox Somes(1)
End Sub


Только не знаю, как Somes в VB правильно определить.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
DrinkinS
Дата 14.1.2006, 15:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











у меня така беда. Я за ранне не знаю какое количество элементов будет в строке. Как изменить размер массива на единицу больше без потери инфы. ПЛИЗ !
smile
  Вверх
cardinal
Дата 14.1.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Пожалуйста, один топик - один вопрос.
Правила форума: http://forum.vingrad.ru/index.php?s=&act=SR&f=27


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
darkart
Дата 14.1.2006, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 2
Всего: 31



Цитата

у меня така беда. Я за ранне не знаю какое количество элементов будет в строке. Как изменить размер массива на единицу больше без потери инфы. ПЛИЗ !

Не знаю что ты хотел, но посмотри ReDim с Preserve
Пример:
Код

  Dim iLen As Integer
  iLen = 10
  ReDim iArr(iLen) As Integer
  iArr(1) = 1
  iLen = iLen + 1
  ReDim Preserve iArr(iLen)
  MsgBox iArr(1)

PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0964 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.