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

问题描述 投票:0回答:4

下面是我的代码:

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

我可以使用

VarToStr
将变体转换为字符串,但Delphi中没有
VarToInt
用于此目的。所以,我就这样转换了
Integer(TcxLookupComboBox(Sender).EditValue)
。这是正确的做法吗?

delphi delphi-xe4
4个回答
15
投票

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

具体检查变体类型转换部分。

您应该能够直接使用隐式类型转换进行分配。正如 Delphi 为您处理的那样。

举个例子:

var
  theVar: Variant;
  theInt: integer;
begin

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

这可以正常工作。

为了确保您的数据是整数并且在运行时是安全的(例如使用变体中没有字符串值,这将导致运行时错误),然后查看Val 函数:http://docwiki.embarcadero.com/Libraries/Rio/en/System.Val

希望这有帮助。


10
投票

这可能有帮助:

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。您也可以使其与浮点数一起使用。


0
投票

据我所知 Delphi 缺乏像下面这样的简单功能:

function VarToIntDef(const V: Variant; const ADefault: Integer = 0): Integer;
begin
  if V = NULL then
    Result := ADefault
  else
    Result := V;
end;

0
投票

我找到了不同的解决方案。 如果你是对的,变体值是整数值,你可以使用这个:

//Using agreggate in TClientDataSet
StrToInt(VarToStr(ClientDataSet.FieldByName('FieldName').AsVariant))
//Using a variant variable type
StrToInt(VarToStr(YourVariableName))

更容易

© www.soinside.com 2019 - 2024. All rights reserved.