Страница: 1 | 2 |
Вопрос: Странный глюк при Export As Variant
Добавлено: 28.05.05 01:02
Автор вопроса: alex
Ответы
Всего ответов: 20
Номер ответа: 16
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #16
Добавлено: 30.05.05 12:56
Нет, тип возвращаемых данных заранее неизвестен
Номер ответа: 17
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #17
Добавлено: 30.05.05 13:45
Что, может быть как число типа long, так и объект типа формы? Что-то непонятно, с чем оперирует твоя функция.
Может тебе использовать UDT?
Номер ответа: 18
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #18
Добавлено: 30.05.05 14:03
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.
 ATE date; // VT_DATE.
BSTR bstrVal; // VT_BSTR.
 ECIMAL 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.
 ATE 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
Самый простой вариант решения проблемы:
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, о чём до сих пор толкуем а возвращается ссылка или заполняется присланная из программы - непринципиально.