Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 1 | 2 |

 

  Вопрос: Странный глюк при Export As Variant Добавлено: 28.05.05 01:02  

Автор вопроса:  alex

Ответить

  Ответы Всего ответов: 20  

Номер ответа: 16
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #16 Добавлено: 30.05.05 12:56
Если ты знаешь, какого рода данные лежат в variant'е, то посмотри на это:


Нет, тип возвращаемых данных заранее неизвестен

Ответить

Номер ответа: 17
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #17 Добавлено: 30.05.05 13:45
Что, может быть как число типа long, так и объект типа формы? Что-то непонятно, с чем оперирует твоя функция.
Может тебе использовать UDT?

Ответить

Номер ответа: 18
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #18 Добавлено: 30.05.05 14:03
typedef struct tagVARIANT {
   VARTYPE vt;
   unsigned short wReserved1;
   unsigned short wReserved2;
   unsigned short wReserved3;
   union {
      Byte bVal; // VT_UI1.
      Short iVal; // VT_I2.
      long lVal; // VT_I4.
      float fltVal; // VT_R4.
      double dblVal; // VT_R8.
      VARIANT_BOOL boolVal; // VT_BOOL.
      SCODE scode; // VT_ERROR.
      CY cyVal; // VT_CY.
      ;DATE date; // VT_DATE.
      BSTR bstrVal; // VT_BSTR.
      ;DECIMAL FAR* pdecVal // VT_BYREF|VT_DECIMAL.
      IUnknown FAR* punkVal; // VT_UNKNOWN.
      IDispatch FAR* pdispVal; // VT_DISPATCH.
      SAFEARRAY FAR* parray; // VT_ARRAY|*.
      Byte FAR* pbVal; // VT_BYREF|VT_UI1.
      short FAR* piVal; // VT_BYREF|VT_I2.
      long FAR* plVal; // VT_BYREF|VT_I4.
      float FAR* pfltVal; // VT_BYREF|VT_R4.
      double FAR* pdblVal; // VT_BYREF|VT_R8.
      VARIANT_BOOL FAR* pboolVal; // VT_BYREF|VT_BOOL.
      SCODE FAR* pscode; // VT_BYREF|VT_ERROR.
      CY FAR* pcyVal; // VT_BYREF|VT_CY.
      ;DATE FAR* pdate; // VT_BYREF|VT_DATE.
      BSTR FAR* pbstrVal; // VT_BYREF|VT_BSTR.
      IUnknown FAR* FAR* ppunkVal; // VT_BYREF|VT_UNKNOWN.
      IDispatch FAR* FAR* ppdispVal; // VT_BYREF|VT_DISPATCH.
      SAFEARRAY FAR* FAR* pparray; // VT_ARRAY|*.
      VARIANT FAR* pvarVal; // VT_BYREF|VT_VARIANT.
      void FAR* byref; // Generic ByRef.
      char cVal; // VT_I1.
      unsigned short uiVal; // VT_UI2.
      unsigned long ulVal; // VT_UI4.
      int intVal; // VT_INT.
      unsigned int uintVal; // VT_UINT.
      char FAR * pcVal; // VT_BYREF|VT_I1.
      unsigned short FAR * puiVal; // VT_BYREF|VT_UI2.
      unsigned long FAR * pulVal; // VT_BYREF|VT_UI4.
      int FAR * pintVal; // VT_BYREF|VT_INT.
      unsigned int FAR * puintVal; //VT_BYREF|VT_UINT.
   };
};


Это поможет определиться, что в твоем варианте содержится

The vt value governs the interpretation of the union

Ответить

Номер ответа: 19
Автор ответа:
 alex



Вопросов: 84
Ответов: 453
 Профиль | | #19 Добавлено: 01.06.05 13:48
Самый простой вариант решения проблемы:

#Compile Dll
Function RetVariant Alias "RetVariant" (ByRef Rezult as Variant) Export As Long
Rezult="test"
End Function

Ответить

Номер ответа: 20
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #20 Добавлено: 02.06.05 02:24
Все првильно: ByRef, о чём до сих пор толкуем :) а возвращается ссылка или заполняется присланная из программы - непринципиально.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам