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

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

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

Ответить
rellai2
постоялец
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45

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

Сообщение rellai2 »

Получаю из com объекта данные в формате varDecimal - и мне их надо скормить TRxMemoryData. Передать я эти данные могу либо asBcd либо asFloat(и asInteger как частное). И как не бьюсь у меня не получается. В интернете информации нет никакой....
Кто нибудь знает как решить?
Последний раз редактировалось rellai2 02.11.2016 12:05:28, всего редактировалось 1 раз.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Ввести промежуточную переменную типа double, присвоить ей varDecimal, а затем передавать значение дальше...
rellai2
постоялец
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45

Сообщение rellai2 »

если бы -- 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 все аналогично
Ответить