Как преобразовать значение variant в integer?

ниже мой код:

var
  i : integer;
  ...
  ...
if not VarIsNull(TcxLookupComboBox(Sender).EditValue) then
begin
  i := Integer(TcxLookupComboBox(Sender).EditValue);
end;

Я могу использовать VarToStr преобразовать вариант в строку, но нет VarToInt в Delphi для этого. Итак, я преобразовал его так Integer(TcxLookupComboBox(Sender).EditValue). Это правильный подход?

2 ответов


взгляните на это:http://docwiki.embarcadero.com/RADStudio/XE5/en/Variant_Types

специально проверьте раздел преобразования типов вариантов.

вы должны иметь возможность назначать напрямую, используя неявное приведение типов. Как в Delphi просто обрабатывает его для вас.

в качестве примера:

var
  theVar: Variant;
  theInt: integer;
begin

  theVar := '123';
  theInt := theVar;
  showmessage(IntToStr(theint));
end;

это работает без проблем.

чтобы гарантировать, что ваши данные-целое число и что это безопасно во время выполнения (как в используйте, что у вас не было строкового значения в варианте, что привело бы к ошибке выполнения), затем посмотрите на функцию Val:http://docwiki.embarcadero.com/Libraries/XE5/en/System.Val

надеюсь, что это помогает.


Это может помочь:

function VarToInt(const AVariant: Variant): integer;
begin
  Result := StrToIntDef(Trim(VarToStr(AVariant)), 0);
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
  ShowMessage(IntToStr(VarToInt(NULL)));
  ShowMessage(IntToStr(VarToInt(' 124   ')));
  ShowMessage(IntToStr(VarToInt(13.87)));
  ShowMessage(IntToStr(VarToInt('Edijs')));
end;

результаты: 0, 124, 0 и 0. Вы можете заставить его работать с поплавками tho.