以下是我的代码:
var
i : integer;
...
...
if not VarIsNull(TcxLookupComboBox(Sender).EditValue) then
begin
i := Integer(TcxLookupComboBox(Sender).EditValue);
end;
我可以使用VarToStr
将变量转换为字符串,但Delphi中没有VarToInt
。所以,我已将其转换为Integer(TcxLookupComboBox(Sender).EditValue)
。这是正确的做法吗?
答案 0 :(得分:10)
看看这个:http://docwiki.embarcadero.com/RADStudio/XE5/en/Variant_Types
具体检查Variant Type Conversions部分。
你应该可以直接使用隐式类型转换来分配。就像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
希望这有帮助。
答案 1 :(得分: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;
结果是:0,124,0和0.你可以使它与浮动你一起工作。