数値であるないかを判定する関数を
教えてください。
procedure TForm1.Button1Click(Sender: TObject);
var
Value: Integer;
begin
if TryStrToInt(Edit1.Text, Value) then
begin
Button1.Caption := IntToStr(Value);
end else
begin
Button1.Caption := '整数には変換できない文字です'
end;
end;
Delphi5では、TryStrToInt関数は見つかりませんでした。
単純に考えれば、
if StrToIntDef(Edit1.Text, 1)<>StrToIntDef(Edit1.Text, 0) then
でできそうな気がします。
はじめまして。最近ちょくちょく利用(ROMですが)させてもらってました。
私の場合、try〜exceptを使います。
数字かどうかを判断したいってことは、
その変数はStringで宣言されているわけですよね?
try
数字変数 := StrToInt(比較したい文字列);
except
エラーの処理
end;
ってかんじで、例外を利用してます。
反則技かもしれませんが、今のところこれで問題はないですね。
Delphi6でTryStrToInt関数を探したのですが見つかりませんでした
試しに実行してみたらコンパイルは通りました。
私も、StrtoIntDefが一番使いよいと思います。
しかし、質問では整数ではなく、数値と有ります
浮動小数点の時は、StrtoFloatを使うことになり例外処理が必要になってきます
TryStrToInt関数のようにヘルプに無くて浮動小数点に使える関数は無いでしょうか?
TryStrToIntの構文がどういうものかわからないので推測ですが、次のように関数を作っておけばいいと思います。
function TryStrToFloat(Text: String; var Value: float): boolean;
begin
try
value := StrToFloat(Text);
Result := True;
except
Result := False;
end;
end;
しらべてみました。
Delphi6から追加された関数のようです。
ヘルプで確認したものの、載ってませんでした。
でも、Ctrl+Spaceの入力候補にはちゃんと載ります。
TryStrToIntのほか、Int64,Float,Date,DateTime用などたくさんあるようです。
定義されてるユニットは、SysUtilsです。
Ctrl+Shift+Spaceの宣言表示にも、ちゃんと載ってます。
ただ、どれもやっぱりアンドキュメントみたいですけど(-_-;)
現在、にしのさんと同じような関数を作って使用しています。
やはり、例外処理が入りますよね
事前に例外の可能性(原因)が解っているのに、積極的に例外処理を使うのは
なぜか気が引けます。
その点は、あまり こだわらなくても良いのでしょうか?
みなさん、ありがとうございました。
>TryStrToIntのほか、Int64,Float,Date,DateTime用などたくさんあるようです。
Delphi7ではヘルプに載っているようです。
ツイート | ![]() |