如何将变量值转换为整数?

10 delphi delphi-xe4

以下是我的代码:

var
  i : integer;
  ...
  ...
if not VarIsNull(TcxLookupComboBox(Sender).EditValue) then
begin
  i := Integer(TcxLookupComboBox(Sender).EditValue);
end;
Run Code Online (Sandbox Code Playgroud)

我可以使用VarToStr将变量转换为字符串,但VarToInt在Delphi中没有这个.所以,我已经像这样转换了它Integer(TcxLookupComboBox(Sender).EditValue).这是正确的方法吗?

小智 10

看看这个:http://docwiki.embarcadero.com/RADStudio/XE5/en/Variant_Types

具体来说,请检查"变体类型转换"部分.

您应该能够直接使用隐式类型转换来分配.就像Delphi一样,只为你处理它.

举个例子:

var
  theVar: Variant;
  theInt: integer;
begin

  theVar := '123';
  theInt := theVar;
  showmessage(IntToStr(theint));
end;
Run Code Online (Sandbox Code Playgroud)

这没有问题.

要确保您的数据是一个整数并且在运行时可以安全地执行(因为在使用中您没有变量中的字符串值,这会导致运行时错误),那么请查看Val功能:http://docwiki.embarcadero.com/Libraries/XE5/en/System.Val

希望这可以帮助.

  • TryStrToInt是应该使用的而不是Val (2认同)

Edi*_*ičs 7

这可能有所帮助:

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;
Run Code Online (Sandbox Code Playgroud)

结果是:0,124,0和0.你可以使它与浮动tho工作.