Уже пробовал - не работает.
Мне нужен именно адрес структуры данных, потому что работа с ней идёт через функции в DLL на VC6:
Код: Выделить всё
Self.MyGroup &= ZBarcode_Create()
If ~(Self.MyGroupl &= NULL) then Self.FlagLoad = True.
Модератор: Дед Пахом
Уже пробовал - не работает.
Код: Выделить всё
Self.MyGroup &= ZBarcode_Create()
If ~(Self.MyGroupl &= NULL) then Self.FlagLoad = True.
Именно так далее работа и идёт с группой по адресу … но !
Код: Выделить всё
Self.MyGroup &= ZBarcode_Create() ! Вот здесь проблемка-с
...
If ~(Self.MyGroupl &= NULL)
ZBarcode_Encode(Address(Self.MyGroup),Loc:Cod,0)
! и т.д. здесь всё понятно и проблем нет
Можно. Но по сути это получится просто объявление в Global … со всеми вытекающими последствиями.
Код: Выделить всё
TGroup Group,Type
Number Long
Phone CString(121)
end
XXX Group,Type ! 1. ЗАВОРАЧИВАЕМ ССЫЛКУ НА ГРУППУ
YYY &TGroup
end
TClass Class, Type, Module('XXX.clw'), Link('XXX.clw')
!MyGroup &TGroup ! <--- ОШИБКА: НЕВЕРНЫЙ ТИП ДАННЫХ
MyGroup Like(XXX) ! 2. Теперь в MyGroup.YYY у нас есть &TGroup
FlagLoad Byte(False)
end
Код: Выделить всё
my_symbol = ZBarcode_Create();
my_symbol->input_mode = UNICODE_MODE;
Код: Выделить всё
PROGRAM
TGroup GROUP, TYPE
i LONG
r REAL
END
internalGrp LIKE(TGroup)
handle LONG, AUTO
MAP
GetGroupRef(), LONG
SetInt(LONG pHandle, LONG pValue)
END
CODE
handle = GetGroupRef()
SetInt(handle, 200)
MESSAGE('i='& internalGrp.i &'; r='& internalGrp.r)
GetGroupRef PROCEDURE()
CODE
internalGrp.i = 100
internalGrp.r = 3.14
RETURN ADDRESS(internalGrp)
SetInt PROCEDURE(LONG pHandle, LONG pValue)
thisGrp &TGroup
CODE
thisGrp &= (pHandle)
thisGrp.i = pValue
Спасибо ! Это очень красивое решение вопроса.