Обертка функции и тип ANY?

Раздел посвящен программированию с использованием Power Basic.
Lapex
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 25.02.2008 (Пн) 14:01

Обертка функции и тип ANY?

Сообщение Lapex » 06.04.2008 (Вс) 21:21

Помогите пожалуйста. Мне нужно сделать обертку для функции, которая будет вызываться из DLL с явной загрузкой:
Код: Выделить всё
DECLARE FUNCTION lua_pushfstring CDECL LIB "lua.dll" ALIAS "lua_pushfstring" _
                                 (BYVAL     L   AS DWORD, _
                                  BYREF     fmt AS ASCIIZ, _
                                  OPT BYVAL a   AS ANY, _
                                  OPT BYVAL b   AS ANY, _
                                  OPT BYVAL c   AS ANY, _
                                  OPT BYVAL d   AS ANY, _
                                  OPT BYVAL e   AS ANY, _
                                  OPT BYVAL f   AS ANY, _
                                  OPT BYVAL g   AS ANY) AS DWORD

Обертка:
Код: Выделить всё
  FUNCTION Lua_PushFString CDECL (BYVAL     L   AS DWORD, _
                                  BYREF     fmt AS ASCIIZ, _
                                  OPT BYVAL a   AS ANY, _
                                  OPT BYVAL b   AS ANY, _
                                  OPT BYVAL c   AS ANY, _
                                  OPT BYVAL d   AS ANY, _
                                  OPT BYVAL e   AS ANY, _
                                  OPT BYVAL f   AS ANY, _
                                  OPT BYVAL g   AS ANY) AS DWORD

    LOCAL Res               AS DWORD
    LOCAL zLua_PushFString  AS DWORD
    zLua_PushFString = GetProcAddressDirectly (hLua_DLL, "lua_pushfstring")
    CALL DWORD zLua_PushFString USING Lua_PushFString (L,fmt,a,b,c,d,e,f,g) TO Res
    FUNCTION = Res
  END FUNCTION   

Проблема собственно в типе ANY, компилятор выдает ошибку: "Undefined TYPE". Можно-ли использовать тип VARIANT вместо ANY?
Пожалуйста подскажите что делать, буду рад любым советам.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 07.04.2008 (Пн) 9:29

Почему нельзя передавать DWORD вместо ANY?

Lapex
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 25.02.2008 (Пн) 14:01

Сообщение Lapex » 07.04.2008 (Пн) 10:27

Спасибо, наверное так и сделаю.

А если понадобиться передать строку? Ведь в DWORD можно положить только указатель на строку - боюсь как бы не вылезло мне потом это боком.

Просто хотелось сделать обертки для всех LUA-функций - 100% совместимыми с объявленными в Lua_h.inc и LuaLib_h.inc от Florent Heyworth.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 07.04.2008 (Пн) 10:46

Lapex писал(а):Спасибо, наверное так и сделаю.

А если понадобиться передать строку? Ведь в DWORD можно положить только указатель на строку - боюсь как бы не вылезло мне потом это боком.


А как по твоему строки в DLL передаются?

Lapex
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 25.02.2008 (Пн) 14:01

Сообщение Lapex » 07.04.2008 (Пн) 11:05

Понял, спасибо.


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

    TopList