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

ztyzrc3y  于 2022-12-23  发布在  其他
关注(0)|答案(3)|浏览(264)

下面是我的代码:

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

我可以使用VarToStr将变量转换为字符串,但是Delphi中没有VarToInt。所以,我将其转换为Integer(TcxLookupComboBox(Sender).EditValue)。这是正确的方法吗?

9q78igpj

9q78igpj1#

看看这个: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
希望这个有用。

kknvjkwl

kknvjkwl2#

这可能有助于:

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。您可以通过以下方式使其与浮点数一起工作。

4dbbbstv

4dbbbstv3#

AFAIK Delphi 缺少下面这样的简单函数:

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

相关问题