2012-08-11 46 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