Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Сложная структура из DLL в VB ?


Автор: maklin 5.5.2008, 14:38
Привет 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



Автор: Naghual 5.5.2008, 14:45
В какую ошибку?

Автор: maklin 5.5.2008, 15:11
После вызова функции 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\. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)