2011-07-06 80 views
-3

我正在創建一個簡單的delphi控制檯應用程序,它可以對用戶輸入的數字進行算術運算,問題是用戶可以輸入'a'..'z','導致應用崩潰的'..'Z'。我怎樣才能防止這個?使用try-except不起作用,任何人都有關於防止這種崩潰的想法?如何在Delphi 7控制檯應用程序中進行按鍵驗證

這裏是我的代碼:

Write('Please Enter a Number:='); 
Readln(str1); 
try 
    num1:=StrToFloat(str1); 
except 
on e:exception do 
    Writeln(e.message); 
end; 

在此先感謝。

+2

異常處理工作正常,在控制檯應用程序 - 必須有東西,你不告訴我們 –

+0

我有什麼要隱藏大衛? num1是Double類型的。 – CyprUS

+0

你是什麼意思的「導致應用程序崩潰」? –

回答

2

正如David所指出的,異常在控制檯應用程序中的工作方式與在GUI應用程序中一樣好。例如,這個完美的作品:

program Project1; 

{$APPTYPE CONSOLE} 

uses 
    SysUtils; 

var 
    s: string; 
    f1, f2: extended; 

begin 

    try 

    Writeln('Please enter a number:'); 
    Readln(s); 
    f1 := StrToFloat(s); 

    Writeln('Please enter a second number:'); 
    Readln(s); 
    f2 := StrToFloat(s); 

    Writeln('The sum is ', FloatToStr(f1+f2)); 
    Readln; 

    except 
    on E: Exception do 
    begin 
     Writeln(E.Message); 
     Readln; 
    end; 
    end; 

end. 

不使用異常的另一種方法是使用TryStrToFloat功能:

program Project1; 

{$APPTYPE CONSOLE} 

uses 
    SysUtils; 

var 
    s1, s2: string; 
    f1, f2: extended; 

begin 

    Writeln('Please enter a number:'); 
    Readln(s1); 
    Writeln('Please enter a second number:'); 
    Readln(s2); 

    if TryStrToFloat(s1, f1) and TryStrToFloat(s2, f2) then 
    Writeln('The sum is ', FloatToStr(f1 + f2)) 
    else 
    Writeln('Invalid input.'); 

    Readln; 

end. 
相關問題