[delphi-users:1190] Delphi2010 ブレークポイントのずれについて

143 views
Skip to first unread message

show770

unread,
Jun 21, 2010, 4:59:44 AM6/21/10
to delphi...@freeml.com
お世話になります。

同じ現象で困っている方がいればと思いとりあえず情報まで。

Delphi2010で、interface部に下記のような宣言があると、そのUnit内のブレークポイントの位置がずれてました。(私の環境だけかもしれませんが?)

TDoubleRect = packed record
case Boolean of
False: (Left, Top, Right, Bottom: Double);
True : (TopLeft, BottomRight: TDoublePoint);
end;

case部からendまでの改行を削除し一行で書ききるとブレークポイントが正しく働きました。(メーラーの処理で改行が入りますが、Unit上では一行です。)

TDoubleRect = packed record
case Boolean of False: (Left, Top, Right, Bottom: Double); True : (TopLeft, BottomRight: TDoublePoint); end;

以上。よろしくお願いします。


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
おもしろ写真を撮ったらMLにアップしよう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=f4Q8m
-----------------------------------------------------[freeml by GMO]--

ken

unread,
Jun 21, 2010, 9:30:10 AM6/21/10
to delphi...@freeml.com
高橋(智)です。
手元の Delphi 2010(Update4,5)で試してみましたが、とくにブレークポイントが
ずれる現象は見られませんでした。
show770さんの使っておられるDelphiのバージョンや、TDoublePointの定義によるの
でしょうか...

--
高橋智宏
Java読書会( http://www.javareading.com/bof/ )

show770 wrote:
> お世話になります。
>
> 同じ現象で困っている方がいればと思いとりあえず情報まで。
>
> Delphi2010で、interface部に下記のような宣言があると、そのUnit内のブレークポイントの位置がずれてました。(私の環境だけかもしれませんが?)
>
> TDoubleRect = packed record
> case Boolean of
> False: (Left, Top, Right, Bottom: Double);
> True : (TopLeft, BottomRight: TDoublePoint);
> end;
>
> case部からendまでの改行を削除し一行で書ききるとブレークポイントが正しく働きました。(メーラーの処理で改行が入りますが、Unit上では一行です。)
>
> TDoubleRect = packed record
> case Boolean of False: (Left, Top, Right, Bottom: Double); True : (TopLeft, BottomRight: TDoublePoint); end;
>
> 以上。よろしくお願いします。
>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
ちょっとした連絡はメンバー掲示板におまかせ!
http://ad.freeml.com/cgi-bin/sa.cgi?id=f4UVG

HOta

unread,
Jun 21, 2010, 7:52:09 PM6/21/10
to delphi...@freeml.com
再構築し直すとずれが直る場合が有ります。


--
〒760-0080 香川県高松市木太町1730-17
瀬戸電測有限会社
TEL 087-836-4066
FAX 087-816-0007
太田寛
Address setod...@nifty.com


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
サークルや友達同士の連絡をカンタンに!ML作成はコチラから
http://ad.freeml.com/cgi-bin/sa.cgi?id=f4YYA

show770

unread,
Jun 21, 2010, 9:16:45 PM6/21/10
to delphi...@freeml.com
お世話になります。

私の環境だけでしたか。
とりあえず、私の環境とそこに至るまでの経緯を記載しておきます。

Delphi2010 Professional を Windows7 Professional で使用しています。

Updateは4,5ともにあててあります。

TDoublePointは、その前の行で下記のように記述しています。

TDoublePoint = record
X,Y : Double;
end;
PDoublePoint = ^TDoublePoint;

該当のUnitは、共通ライブラリー的なもので、各種 Unit の interface 部の Uses で宣言して使用しています。
Delphi6,Delphi7,Delphi2005,Delphi2010、と使用してきました。

Delphi2005は移行する際に、共通ライブラリーの全てを別フォルダーにコピーし、ライブラリーパスをDelphi2005用で統一しました。

Delphi2010に移行する際にも、同様に処理しました。(String 関連修正のため)

ブレークポイントが、ずれた時期は不明です。
Delphi7の時には、正常に働いていたのは間違いないのですが。

再構築は、一つの Project で何度か行ったのですが、変わりませんでした。(DCUファイルを削除してから再構築してみましたが変化無しでした。)

一行に修正した理由は、バイナリーエディタで該当 Unit を見たところ、先の箇所で改行コードが 0D のみになっていました。
そこで、一度改行を消してから再度改行をしなおしたのですが、改行コードが 0D のみのままでした。
notepad で編集し改行コードが 0D+0A になったのを確認し、Delphi2010で開くと end; の前に空行が追加されていました。

その、状態で実行するとブレークポイントがやはりずれてしまいます。
空行を消しても、ブレークポイントはずれていました。
バイナリーエディタで確認すると、やはり 0D のみになっています。

今回のように、TDoublePoint 部分の Case 以降 End; までを一行で書ききる形にしたところブレークポイントが正常な位置になりました。


このメールを書きながら気になったので古い Unit (Delphi7,Delphi2005用)も確認してみましたが、同じく 0D のみでした。

また、別の Project で確認してみたところ、こちらは以前の状態に戻しても正常な位置にブレークポイントが設定出来ました。
その後、今回の原因になった Project で確認すると正常な位置に設定出来るようになりました。
ちなみに、バイナリーエディタで確認すると、改行位置は全て 0D+0A になっています。
end;の前に空行も出来ていません。

あれほど悩んだのが嘘のようです。

以上。
ご報告まで。


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
練習やMTGの予定は忘れずに共有スケジュールに登録しよう♪
http://ad.freeml.com/cgi-bin/sa.cgi?id=f5abL

show770

unread,
Jun 21, 2010, 9:22:43 PM6/21/10
to delphi...@freeml.com
お世話になります。

> 今回のように、TDoublePoint 部分の Case 以降 End; までを一行で書ききる形にした

TDoublePoint ではなく、TDoubleRect の間違いです。


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
おもしろ写真を撮ったらMLにアップしよう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=f5agi

Reply all
Reply to author
Forward
0 new messages