2012-08-11 24 views
4

嗨我是Delphi的初学者。 但令我困惑的是,我有Edit1.Text 和使用StrToInt(Edit1.Text)的变量“i”; 一切都好,直到我输入减号德尔福编辑文本整数:减号错误

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

回答

6

当您不是100%确定输入字符串可以转换为整数值时,使用StrToInt转换函数是不安全的。编辑框就是这样一个不安全的案例。由于您输入的第一个字符-无法转换为整数,因此您的转换失败。清除编辑框时也会发生同样的情况。为了保证这种转换的安全性,您可以使用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; 
+0

+1。你打了我大约30秒。 :-) – 2012-08-11 23:12:05

+0

@Ken,d'oh。它的目的只是一个临时职位。现在我需要考虑一些代码文本。 – TLama 2012-08-11 23:17:32

+3

你可以看到我删除的,对不对?如果有什么对你有用的,请随时帮助你自己。 – 2012-08-11 23:18:20

2

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

+0

但我刚开始类型(例如-7),当然首先你键入 - 然后7.但是德尔福提供了错误的第一 – 2012-08-11 22:35:00

+1

假设你有你'StrToInt'在OnChange事件中的转换代码,它失败了,因为OnChange事件触发了每个编辑框文本更改。当你输入'-'作为第一个字符时,'OnChange'事件触发并执行你的'StrToInt'转换,由于'-'符号不是一个整数。当你清除编辑框时,你也会得到类似的错误。 – TLama 2012-08-11 22:47:04

+0

那该怎么办? – 2012-08-11 22:56:44