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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача массива из VB в COM-объект 
V
    Опции темы
explorer
Дата 14.9.2009, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Люди добрые, помогите, пожалуйста! Проблема довольно неприятная. Есть COM-объект в dll и клиент на VB6. Клиент подципляет объект хорошо, все методы вызывает и все работает, кроме одного. Есть метод, который требует в качестве парамера массив: 
Код

public bool SuspeciousMethod(int[] defectsIDs)
        {
            bool result = true;
            ...
            return result;
        }


СOM dll написана на C#, поэтому шарповский int (System.Int32) - это long в VB6. 

Клиентский код такой:
Код

Public Sub ClientMethod(ByRef data() As Long)
    If (Not object.SuspeciousMethod(data)) Then
     ...
    End If
End Sub


В ClientMethod передается вот такой массив:
Код

    Option Base 0
...
    ReDim data(someCombo.ListCount) As Long
    Dim i As Integer
    If (someCombo.ListCount > 0) Then
        For i = 0 To someCombo.ListCount - 1
            data(i) = CLng(positionsCombo.List(i))
        Next i
        ClientMethod data
    End If


При копиляции выдается сообщение, что в SuspeciousMethod используется тип автоматизации, не поддерживаемый VB?
Как быть? Что делать? 

--------------------
 
PM MAIL WWW ICQ   Вверх
Akina
Дата 14.9.2009, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



И? не работает? ошибается? падает?
А что при трассировке в IDE? Попробуй расписАть строку
Код

If (Not object.SuspeciousMethod(data)) Then

в
Код

Dim RetCode As Boolean
'...
RetCode = object.SuspeciousMethod(data)
If Not RetCode Then

и пройти пошагово - каков эффект?

Цитата(explorer @  14.9.2009,  11:45 Найти цитируемый пост)
При копиляции выдается сообщение, что в SuspeciousMethod используется тип автоматизации, не поддерживаемый VB?

Дословно, пожалуйста...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
explorer
Дата 14.9.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Какая там трассировка. Не компилируется вообще! 
Цитата

При копиляции выдается сообщение, что в SuspeciousMethod используется тип автоматизации, не поддерживаемый VB


Сообщение об ошибке вот такое дословно:
Цитата

Function or interface marked as restricted, or the function uses an Automation type not supported in Visual Basic.


Хотя Object Brawser выдает вот что:
Код

Function SuspeciousMethod(defectsIDs() As Long) As Boolean

--------------------
 
PM MAIL WWW ICQ   Вверх
Akina
Дата 14.9.2009, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
explorer
Дата 14.9.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Помогло исправление метода в самом DLL: 
вместо
Код

public bool SuspeciousMethod(int[] defectsIDs)

нужно
Код

public bool SuspeciousMethod(ref int[] defectsIDs)

В общем проблема была не в VB-клиенте. 
--------------------
 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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