数値であるないかを判定する関数は?

解決


みき  2002-10-11 00:00:21  No: 1684  IP: [192.*.*.*]

数値であるないかを判定する関数を
教えてください。

編集    削除
OverQ  2002-10-11 06:18:52  No: 1685  IP: [192.*.*.*]

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;

編集    削除
にしの  2002-10-11 08:17:14  No: 1686  IP: [192.*.*.*]

Delphi5では、TryStrToInt関数は見つかりませんでした。
単純に考えれば、

if StrToIntDef(Edit1.Text, 1)<>StrToIntDef(Edit1.Text, 0) then

でできそうな気がします。

編集    削除
ひで  2002-10-11 16:17:08  No: 1687  IP: [192.*.*.*]

はじめまして。最近ちょくちょく利用(ROMですが)させてもらってました。
私の場合、try〜exceptを使います。

数字かどうかを判断したいってことは、
その変数はStringで宣言されているわけですよね?

  try
    数字変数 := StrToInt(比較したい文字列);
  except
    エラーの処理
  end;

ってかんじで、例外を利用してます。
反則技かもしれませんが、今のところこれで問題はないですね。

編集    削除
Taku  2002-10-11 17:27:51  No: 1688  IP: [192.*.*.*]

Delphi6でTryStrToInt関数を探したのですが見つかりませんでした
試しに実行してみたらコンパイルは通りました。
私も、StrtoIntDefが一番使いよいと思います。
しかし、質問では整数ではなく、数値と有ります
浮動小数点の時は、StrtoFloatを使うことになり例外処理が必要になってきます
TryStrToInt関数のようにヘルプに無くて浮動小数点に使える関数は無いでしょうか?

編集    削除
にしの  2002-10-11 18:51:38  No: 1689  IP: [192.*.*.*]

TryStrToIntの構文がどういうものかわからないので推測ですが、次のように関数を作っておけばいいと思います。

function TryStrToFloat(Text: String; var Value: float): boolean;
begin
  try
    value := StrToFloat(Text);
    Result := True;
  except
    Result := False;
  end;
end;

編集    削除
たかみちえ  URL  2002-10-11 20:31:24  No: 1690  IP: [192.*.*.*]

しらべてみました。

  Delphi6から追加された関数のようです。
ヘルプで確認したものの、載ってませんでした。
でも、Ctrl+Spaceの入力候補にはちゃんと載ります。
TryStrToIntのほか、Int64,Float,Date,DateTime用などたくさんあるようです。
定義されてるユニットは、SysUtilsです。
Ctrl+Shift+Spaceの宣言表示にも、ちゃんと載ってます。

  ただ、どれもやっぱりアンドキュメントみたいですけど(-_-;)

編集    削除
Taku  2002-10-11 20:42:49  No: 1691  IP: [192.*.*.*]

現在、にしのさんと同じような関数を作って使用しています。
やはり、例外処理が入りますよね
事前に例外の可能性(原因)が解っているのに、積極的に例外処理を使うのは
なぜか気が引けます。
その点は、あまり  こだわらなくても良いのでしょうか?

編集    削除
みき  2002-10-11 20:49:04  No: 1692  IP: [192.*.*.*]

みなさん、ありがとうございました。

編集    削除
pain  2003-02-11 09:49:27  No: 1693  IP: [192.*.*.*]

>TryStrToIntのほか、Int64,Float,Date,DateTime用などたくさんあるようです。
Delphi7ではヘルプに載っているようです。

編集    削除