5

嗨,我是德尔福的初学者。但让我感到困惑的是,我有 Edit1.Text 和变量“i”,它使用 StrToInt(Edit1.Text); 一切正常,直到我输入减号

如果我用数字复制/粘贴减号(例如-2),它可以工作任何人都可以帮助我!问候, 奥马尔

4

2 回答 2

7

StrToInt您不能 100% 确定输入字符串是否可以转换为整数值时,使用转换函数是不安全的。而编辑框就是这样一个不安全的案例。您的转换失败,因为您输入了-无法转换为整数的符号作为第一个字符。当您清除编辑框时也会发生同样的情况。为了使这种转换安全,您可以使用TryStrToInt为您处理转换异常的函数。你可以这样使用它:

procedure TForm1.Edit1Change(Sender: TObject);
var
  I: Integer;
begin
  // if this function call returns True, the conversion succeeded;
  // when False, the input string couldn't be converted to integer
  if TryStrToInt(Edit1.Text, I) then
  begin
    // the conversion succeeded, so you can work
    // with the I variable here as you need
    I := I + 1;
    ShowMessage('Entered value incremented by 1 equals to: ' + IntToStr(I));
  end;
end;
于 2012-08-11T23:10:28.520 回答
2

很明显,你会得到一个错误,因为-它不是整数。您可以改用 TryStrToInt。

于 2012-08-11T22:25:51.040 回答