
No.4ベストアンサー
- 回答日時:
10回に一回くらいメッセージが出るとなると、ちょっとお手上げです。
やはり、実行環境に何か原因があるような気がします。
確認しておくべきことは、
数値に変換できない文字のとき、例外が発生していないのか、それとも、例外が発生しているのにメッセージが表示されないのか。
例外が発生しているのにメッセージが表示されないとしたら、
例外処理の中だけメッセージボックスが表示されないなのか、通常の処理の中でもメッセージボックスが表示されないのか。
の2点でしょう。
もし、例外が発生しているのに例外処理の中だけメッセージボックスが表示されないというのなら、
例外処理の中では、エラーフラグを立てておき、例外処理を抜けてからエラーフラグを判定してメッセージボックスを表示するという方法ではどうですか。
フラッグを立ててみてわかりました。
On e:ConvertError doのあとは一行だけのときはBebin,End;を使ってはいけないのです。
お陰さまでわかりました、長い間お付き合いありがとうございました。
No.3
- 回答日時:
>二番目のやり方ですが例外を拾わなくなりました。
。。。(T_T)。二番目のStrToFloatDefを使う方法は、エラーにはならないので例外は発生しません。
数字に変換できない文字のとき、-1.0E100を代入し、それを判断して処理を分岐させる方法です。
exeファイルでメッセージボックスが出ないのは、もしかしたらDelphi XEの実行環境のせいかもしれません。
メッセージボックスの表示先が実行マシンのモニターになっていないとか・・・
メッセージボックスではなく、別の方法、例えば、エラーファイルを作成するなどして確認してみてはどうですか。
この回答への補足
二番目の方法はなんとか解決できました。
一つづつ解決します。
「メッセージボックスの表示先が実行マシンのモニターになっていない」はどうやって確かめるのですか?
それにおかしいのは、10回に一回くらいはメッセージが出るのですよ。。。
(長い間のお付き合いありがとうございます。)
No.2
- 回答日時:
>作成されたexeファイルではなかなかメッセージボックスが出てくれません
もしかしたら、別のエラーが発生しているかもしれません。
on EConvertError do
ではなくて、
on Exception do
にしてみてください。
on E:Exception do
ShowMessage(E.Massage);
とすれば、エラーの内容が表示されます。
もしどうしてもダメなら、StrToFloatDefを使う方法で、
edit1.Textに絶対に入力されることがない値を利用して、
h:=StrToFloatDef(edit1.Text,-1.0E100);
if h<-1.0E99 then
begin
// エラー処理
Exit;
end;
というような方法もあります。
この回答への補足
一番目のやり方は変わりませんでした。相変わらずEConvertErrorを出しております。exeからはメッセージが出ません。
またメッセージ(e.Message)の内容は「’’は浮動小数点数ではありません」です。
二番目のやり方ですが例外を拾わなくなりました。。。。(T_T)。
No.1
- 回答日時:
一番簡単な使い方は、
try
・・・・・
h:=StrToFloat(edit1.Text);
・・・・・
except
// エラー処理
・・・・・
end;
tryからexceptまでの間にエラーが発生すると、exceptの次の行に制御が移ります。
この回答への補足
レスありがとうございます。
try
h:=StrToFloat(edit1.Text);
・・・・・
except
on EConvertError do // 変換の失敗による例外
begin
ShowMessage('文字が含まれています');
end;
end;
にて、Delphiではエラー再現時メッセージがでるのですが、作成されたexeファイルではなかなかメッセージボックスが出てくれません、どこか、コーディングが変でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- Excel(エクセル) 何故割り算なのでしょうか? 6 2022/11/09 13:30
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Java すみません。助けてください。 javaについての質問です。 integerに変換できない数値をエラー 5 2022/05/18 19:16
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
-
UserForm1.Showでエラーになり...
-
VBA データ(特定値)のある最...
-
String""から型'Double'への変...
-
「実行時エラー '3167' レコー...
-
【VBA】ワークブックを開く時に...
-
フランスの生年月日(jj/mm/aaaa)
-
マクロOn Error GoTo ErrLabel...
-
SQLでエラーです。
-
インポート時のエラー「データ...
-
実行時エラー 438 の解決策をお...
-
マクロで"#N/A"のエラー行を削...
-
ActiveCell.FormulaR1C1の変数
-
VBA Find でオートメーションエ...
-
ACCESSで値を代入できないとは?
-
VBAコード実行を中止する方法は...
-
Selenium のエラーがでます。
-
VBAで、Excelの選択範囲をWeb形...
-
CStringについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロOn Error GoTo ErrLabel...
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
String""から型'Double'への変...
-
マクロで"#N/A"のエラー行を削...
-
文字列内で括弧を使うには
-
Excel vbaについての質問
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
【Access】Excelインポート時に...
-
VBでSQL文のUPDATE構文を使った...
-
【VB.NET】 パワポ操作を非表示で
-
「実行時エラー '3167' レコー...
-
実行時エラー'-2147467259(8000...
-
実行時エラー 438 の解決策をお...
おすすめ情報