04.09.2006, 19:56 | #1 |
Участник
|
DWORD to FLOAT
Есть Binary значение размером 4 байта полученное из внешнего источника там это число с плавающей точкой, как в Аксапте его разшифровать?
|
|
05.09.2006, 09:03 | #2 |
Участник
|
Цитата:
Сообщение от ivas
Есть Binary значение размером 4 байта полученное из внешнего источника там это число с плавающей точкой, как в Аксапте его разшифровать?
X++: Binary b = new Binary();
b.double(); X++: ExtTypes::Double Последний раз редактировалось Lucky13; 05.09.2006 в 09:57. |
|
05.09.2006, 11:36 | #3 |
Участник
|
С Double проблем нет прекрасно работает проблема именно с Float длинна 4 байта
|
|
05.09.2006, 11:44 | #4 |
Участник
|
код:
PHP код:
|
|
05.09.2006, 14:08 | #5 |
Участник
|
Посмотри класс COMVariant. У него есть свойство Float.
Чтобы сказать что-то более определенное надо знать как получаешь и как передаешь значение |
|
05.09.2006, 14:50 | #6 |
Участник
|
Код: binary b = new binary(4); ; _record.binary(#DataOffset, b); // запись адреса b в другой binary: _record fetch.call(_record); // вызов функции которая заполняет _record //теперь в b лежит значение типа float 4 байта вот его то мне и нужно получить |
|
05.09.2006, 14:56 | #7 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
Посмотри класс COMVariant. У него есть свойство Float.
Чтобы сказать что-то более определенное надо знать как получаешь и как передаешь значение COMVariant спас спасибо! |
|
05.09.2006, 14:58 | #8 |
Участник
|
Код: COMVariant f = new COMVariant(COMVariantInOut::In, COMVariantType::VT_R4); ; f.long(b.dWord(0)); axValue = f.float(); |
|
05.09.2006, 16:04 | #9 |
Moderator
|
В качестве P.S. До кучи в коллекцию. В классе ССADOField метод value содержит шикарный шаблон switch почти на все случаи жизни.
Правда, конкретно Ваш float (VT_R4) упрятан в double, но подправить недолго. Код: anytype value() { COMVariant value; value = field.value(); switch (value.variantType()) { case COMVariantType::VT_I2: return value.byte(); case COMVariantType::VT_I4: return value.int(); case COMVariantType::VT_R4, COMVariantType::VT_R8: return value.double(); case COMVariantType::VT_CY: return value.currency(); case COMVariantType::VT_DATE: return value.date(); case COMVariantType::VT_BSTR: return value.bStr(); case COMVariantType::VT_BOOL: return value.boolean(); case COMVariantType::VT_DECIMAL: return value.decimal(); case COMVariantType::VT_I1: return value.byte(); case COMVariantType::VT_UI1: return value.uInt(); case COMVariantType::VT_UI2: return value.uShort(); case COMVariantType::VT_UI4: return value.uLong(); } return ''; } |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Внешнее приложение | 2 | |||
Базовые типы С++ | 5 | |||
ChangeDisplaySettings | 6 | |||
WinAPI. Ссылка (POINT) третьего уровня вложенности | 2 | |||
обертка к WinAPI PrintDlg | 12 |
|