use*_*816 2 delphi delphi-xe2 firemonkey
TNumberbox和TSpinEdit返回定义为单一类型的值.我想使用这些值来进行简单的整数运算,但是我不能将它们成功地转换为更通用的整数类型,如果我尝试将它们用作整数,Delphi会给出编译时错误.例如,此代码失败了
"E2010不兼容类型:'Int64'和'扩展'":
var
sMinutes: single;
T: TDatetime;
begin
sMinutes :=Numberbox1.value;
T :=incminute(Now,sMinutes);
Run Code Online (Sandbox Code Playgroud)
我想在这里做的就是让用户给我一些时间,然后相应地增加一个日期时间值.我尝试过的任何东西都不能让我以这种方式使用那个单曲.
我错过了什么?
只需截断该值,然后再使用它:
var
Minutes: Integer;
T: TDateTime;
begin
Minutes := Trunc(NumberBox1.Value);
T := IncMinute(Now, Minutes);
end;
Run Code Online (Sandbox Code Playgroud)
根据您的特定需求,您可能需要使用Round.它将正确舍入到最接近的整数值,确保1.999999999999正确变为整数2; Trunc会导致1而不是.(感谢Heartware的提醒.)
var
Minutes: Integer;
T: TDateTime;
begin
Minutes := Round(NumberBox1.Value);
T := IncMinute(Now, Minutes);
end;
Run Code Online (Sandbox Code Playgroud)