コンパイル時のエラー発生行がずれる原因は?

解決


おも  2008-10-04 04:47:40  No: 32101

コンパイル時にエラーが発生すると、下記のようなかんじのメッセージとともに、エラー箇所がフォーカス & ハイライトされると思います。が、何故かハイライト箇所が二行ほどずれた行になることがあります。これまでに二度体験しました。こういう現象は良く起こりますか?また、そのようになってしまう原因はなんでしょうか?

>>[エラー] Unit1.pas(1131): 未定義の識別子 : 'InedxNo'
>>[致命的エラー] Project1.dpr(5): 'Unit1.pas' ユニットはコンパイルできませんでした

同じような現象を体験された方が居られるのかどうかちょっと気になりましたので質問しました。

環境は Delphi6 Personal + Win2000です。
PCの再起動でも現象は同じでした。その部分は修正し、他の部分でわざとエラーさせた場合にはちゃんとハイライトしていましたし、いまいち現象がよくわからないです。


ofZ  2008-10-04 18:34:28  No: 32102

同じファイル名のユニットが、二カ所以上にある。

例えば、開発フォルダを複写し、複写した方のプロジェクトを開くと、
保存されているユニットのパスは、複写元になっていて、複写先を
編集しているつもりが、複写元を編集していたとか。
(開いている方の同名ユニットを優先して表示するため)

・・・あれ?これってブレークポイントだっけ?


おも  2008-10-04 21:24:31  No: 32103

ofZさん、レス有難うございます。
レス内容にヒントを得て解決できました。

>>同じファイル名のユニットが、二カ所以上にある。

確かに、ユニットそのものではないですが、別ユニットのprocedureのソースコピーを元にして作業した場合に起こった気がしました。また、デバッグモード時に左端につくブレークポイント設定可能マーク?(適切な用語を知りません)もあるところからずれており、デバッグ中にあるforループ等もずれた場所でループします。

で、もう少し見てみたところ、procedure内で宣言している変数の一つが、そのユニットでは、Formのprivateで宣言してあり重複していました。この重複した変数へ代入するコード部分が無効(ブレークポイント設定可能マークなし)とされて、その後のブレークポイント設定可能マークとコードの位置にズレが生じていました。変数宣言を修正したところ解決しました。

>>その部分は修正し、他の部分でわざとエラーさせた場合にはちゃんとハイライトしていましたし、いまいち現象がよくわからないです。

これは、わざとエラーさせた箇所が、たまたま、真の問題箇所よりも前の行だったためにずれなかっただけと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加