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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сложная структура из DLL в VB ? 
:(
    Опции темы
maklin
Дата 5.5.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет All.
Помогите кто сможет.
Есть dataserv.dll в которой объявлена ф-я:
Код

const TDataForOPCServer * PASCAL GetDataForOPCServer( void );

Возвращаемый тип это структура следующего формата :
Код

#pragma pack(push, 1) // Важно!!! Байтовое выравнивание

struct TAnTag 
{
  char *name;     // Динамический размер переменной
  float value; 
  unsigned int OpcQuality;
};

struct TDataForOPCServer
{
  unsigned char dataIsValid;   
  unsigned short anTagsQnty;   // количество эл-ов в anTagsArray
  const TAnTag *anTagsArray;   // указатель на массив TAnTag 

  unsigned short structVersionNumber;
  char DeviceName[64]; 
  char Reserved[128]; 
};
#pragma pack(pop)


Вопрос. Как в VB описать соответствующую структуру для приема данных возвращаемых функцией GetDataForOPCServer() ?
Попробовал следующий вариант типа, но  вызов функции вываливается в ошибку:

Код

Option Explicit
 
Type TAnTag 
       namef As String
       value As Single
       OpcQuality As Long
End Type


Type TDataForOPCServer
   dataIsValid As Byte
   anTagsQnty As Integer
   anTagsArray() As TAnTag 
       
   structVersionNumber As Integer
   devicename(64) As Byte
   resrved(128) As Byte
   
End Type
 
Declare Function GetDataForOPCServer Lib "dataserv.dll" () As TDataForOPCServer

Sub MyMacro()
    Dim dOPC As TDataForOPCServer
    
    dOPC = GetDataForOPCServer()
    
End Sub



PM MAIL   Вверх
Naghual
Дата 5.5.2008, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



В какую ошибку?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
maklin
Дата 5.5.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



После вызова функции GetDataForOPCServer() переходит на ErrLine.
Код

Sub MyMacro()
    
    Dim dOPC As TDataForOPCServer
    
    On Error GoTo ErrLine
    
    dOPC = GetDataForOPCServer()
    
    Dim i As Integer
    i = i + 1
    
ErrLine:
    ShowError "Error !!!!!"
End Sub

dataserv.dll не зарегистрирована, расположена в C:\WINXP\system\. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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