Delphi6 Personal +XP で試作しています。初歩的な質問で申し訳ありませんがご指導ください。
ほとんどの場合上手く動いているのですが読み込むデータにより時たま’06は整数ではありません’のようにメッセージがでて突然止まってしまいます。 ファイルが悪いのかと思って何度もチェックしてみましたがファイルに異常はなくどこかの計算過程(かなり膨大)で出ているようです。 どこの行か、または何の変数が問題なのか特定できずに開発が止まってしまいました。
このような時に問題がある変数は何なのか、あるいはどこの行か、などどのようにエラー原因を特定していくのか方法をご指導ください。
文字列を整数に変換する箇所(たとえば、StrToInt 関数)で
例外が発生しているとか?
’06は整数ではありません’のエラーから類推すると、
文字列変数から整数に変換しているStrToInt関数などが
考えられます。
動作をデーターを読み込む場合に起こっているものと考えると、
このルーチンの適当な場所に、ブレークポイントを置き、
ステップ実行やトレース実行でエラーを起こす場所まで動かして、
特定します。
こんにちわ。
下記のような感じでいかかでしょうか?
Hensu[I]に、変なのが入ってたら、どの場所か
特定できるのでは?
try
for I:=1 to 100
ErrorIdx := I;
Kazu := StrToInt(Hensu[I]);
end;
except
on E:Exception do begin
ShowMessage(StrToInt(ErrorIdx) + ' でエラー');
end;
end;
皆様 ご親切にアドバイスを頂きありがとうございました。
やはりインタプリータではないのでエラー行や変数名を抽出するのは無理であることがわかりました。かなりの手間となることは予想されますがブレークポイントとかTry Exceptなどで地道につぶしていくことにします。経験を積んでデバッグのスキルを高めることを心掛けます。本当は簡単にできることが自分だけ苦労しているのではないか?などと思って質問させていただきましたがこれで地道な方法に挑戦する心構えができました。インターネット環境から離れていたため投稿が遅れましたことをお詫びします。
ツイート | ![]() |