[Решено] Как сконвертировать varDecimal в real или в bcd

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

[Решено] Как сконвертировать varDecimal в real или в bcd

Сообщение rellai2 » 02.11.2016 10:37:10

Получаю из com объекта данные в формате varDecimal - и мне их надо скормить TRxMemoryData. Передать я эти данные могу либо asBcd либо asFloat(и asInteger как частное). И как не бьюсь у меня не получается. В интернете информации нет никакой....
Кто нибудь знает как решить?
Последний раз редактировалось rellai2 02.11.2016 13:05:28, всего редактировалось 1 раз.
rellai2
постоялец
 
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45

Re: Как сконвертировать varDecimal в real или в bcd

Сообщение Снег Север » 02.11.2016 11:51:41

Ввести промежуточную переменную типа double, присвоить ей varDecimal, а затем передавать значение дальше...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2997
Зарегистрирован: 27.11.2007 16:14:47

Re: Как сконвертировать varDecimal в real или в bcd

Сообщение rellai2 » 02.11.2016 12:25:19

если бы -- Ivalid Variant Typecast

Добавлено спустя 33 минуты 37 секунд:
в общем разобрался
кому интересно:
объявляем
Код: Выделить всё
  function VarI4FromDec(var pdecIn:TDecimal; var plOut:LONG):HResult;stdcall;external oleaut32dll name 'VarI4FromDec';   


ну а далее
Код: Выделить всё
     
if  aDataset.FieldDefs[m].DataType in [ftInteger,ftLargeint,ftSmallint] then
  begin
    if VarIsOrdinal(tmpvar) then
      aDataset.Fields[m].AsInteger:= VarAsType(tmpvar,varinteger)
    else
    begin
       if VarI4FromDec(tagdec(tmpvar), tmpInt) = S_OK then
         aDataset.Fields[m].AsInteger:=   tmpInt;
    end;       


Добавлено спустя 36 секунд:
Для float все аналогично
rellai2
постоялец
 
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45


Вернуться в Lazarus

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

Сейчас этот форум просматривают: Google [Bot] и гости: 19

Рейтинг@Mail.ru