![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Variant Conversion
TTCustomDelphiMaster © (2003-01-12 16:08:00)В результате определенных операций в значение переменной типа Variant получается равным -NAN (хотя должно быть null или в крайнем случае 0). Как определить что значение переменной равно NAN?
if Val = ?? then
ЗЫ: DBGrid каким то образом в этой ячейке пишет NAN. Я пытаюсь вывести текст на TField.OnGetText и получаю ошибку Invalid floating point operation.
TTCustomDelphiMaster (2003-01-12 18:27:00) [1]Всем спасибо.
В таблице у поля тапа Currency Default Value бало равно 0.00 Убрал - ошибка исчезла.
Tux (2003-01-12 18:21:00) [2]Речь идет о COM VARIANT? Если да, сперва можно посмотреть поле vt структуры (дифференцировать VT_NULL, VT_EMPTY и пр.)
Yuri-7 (2003-01-12 18:12:00) [3]Попробуй использовать FloatToStrF(Val,....). По Help, она возвращает строку NAN.
Набережных С. (2003-01-12 18:10:00) [4]А при чем здесь D5? Это из D7, модуль math.
function IsNan(const AValue: Single): Boolean;
begin
Result := ((PLongWord(@AValue)^ and $7F800000) = $7F800000) and
((PLongWord(@AValue)^ and $007FFFFF) <> $00000000);
end;
function IsNan(const AValue: Double): Boolean;
begin
Result := ((PInt64(@AValue)^ and $7FF0000000000000) = $7FF0000000000000) and
((PInt64(@AValue)^ and $000FFFFFFFFFFFFF) <> $0000000000000000);
end;
function IsNan(const AValue: Extended): Boolean;
type
TExtented = packed record
Mantissa: Int64;
Exponent: Word;
end;
PExtended = ^TExtented;
begin
Result := ((PExtended(@AValue)^.Exponent and $7FFF) = $7FFF) and
((PExtended(@AValue)^.Mantissa and $7FFFFFFFFFFFFFFF) <> 0);
end;
Anatoly Podgoretsky (2003-01-12 18:04:00) [5]Ты наверно пытаешься преобразовать, то что числом не является, например NULL
TTCustomDelphiMaster (2003-01-12 17:48:00) [6]Что то не нашел такой функции в D5.
Набережных С. (2003-01-12 17:29:00) [7]if IsNan(Val) then "Yes" else "No"