12
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DelphiAdvent Calendar 2023

Day 3

【Delphi】過去のプロジェクトを開くと変な位置にブレークポイントが表示される

Last updated at Posted at 2023-12-02

はじめに

Delphi Users (Japan) に寄せられた質問のやりとりをまとめてみました。

Q: 過去のプロジェクトを開くと変な位置にブレークポイントが表示される?

過去のプロジェクトをマイグレーションするために新しい Delphi で開くと、変な位置にブレークポイントが設定されており、ブレークポイントを削除して保存しても次にプロジェクトを開くとブレークポイントが復活するのですが?

A: [デスクトップの自動保存] を無効にした上で、プロジェクトフォルダ中のプロジェクトデスクトップファイル (*.dsk) を削除しましょう。

[デスクトップの自動保存] では次の設定が保存されます。

  • デスクトップ レイアウト
  • ブレークポイント
  • 監視式
  • IDE に現在開いているファイル

設定はプロジェクトを閉じた時に プロジェクトデスクトップファイル (*.dsk) に保存されます。

ですが、[デスクトップの自動保存] が無効であっても、一旦作られたプロジェクトデスクトップファイルは IDE によって読み込まれてしまいます。 つまり、このプロジェクトは [デスクトップの自動保存] が有効な環境で過去に開かれた事があるという事になります。

[デスクトップの自動保存] が無効の場合には、プロジェクトを閉じてもプロジェクトデスクトップファイルは更新されませんので、ブレークポイントを削除しても、次にプロジェクトを開いた際に復活してしまいます。

以下、DocWiki からの引用です。

プロジェクトを閉じるときや製品を終了するときに、プロジェクト デスクトップ ファイル(ファイル拡張子が .dsk のファイル)が自動保存または更新されます。

.dsk ファイルには、下記項目の現在の設定が記録されます。
・デスクトップ レイアウト
・ブレークポイント
・監視式
・IDE に現在開いているファイル

[自動保存の設定]セクションの[プロジェクト デスクトップ]が無効になっている場合、既存のプロジェクト デスクトップ(.dsk)ファイルは、プロジェクトを開いたときにはすべて読み取られますが、更新はされません。 その結果、.dsk ファイルがディスクから手動で削除されるまでは、同じファイル群がプロジェクトで開かれます。

後でプロジェクトを開き直すと、.dsk ファイルが読み取られ、デスクトップ レイアウト、ブレークポイント、監視式がすべて復元されます。 また、プロジェクトを閉じたときに開いていたファイルが、プロジェクトで使用されるかどうかにかかわらず、すべて再び開かれます。

いくつかある設定項目の内の IDE に現在開いているファイルの自動保存 についてだけ書かれているので解りにくいですが、これをブレークポイントに置き換えると、

  • [デスクトップの自動保存] が有効だとプロジェクトを閉じた時にブレークポイントがプロジェクトデスクトップファイル (*.dsk) に保存される
  • プロジェクトフォルダにプロジェクトデスクトップファイル (*.dsk) があれば、[デスクトップの自動保存] の設定に関係なくブレークポイントが読み込まれる
  • [デスクトップの自動保存] を無効にしても、プロジェクトデスクトップファイル (*.dsk) は削除されないため、プロジェクトを開き直すとブレークポイントは復元される

という事を言っています。

[デスクトップの自動保存]

メニューの [ツール | オプション] から設定しますが、Delphi のバージョンによって設定項目や呼び方が異なります。

・10.4 Sydney 以降

オプション画面の [IDE | 保存とリカバリ] にあります。

image.png

See also:

・10.3 Rio 以前のガリレオ IDE

オプション画面の [環境オプション] にあります。

image.png

See also:

・Delphi 7 以前の旧 IDE

[ツール | 環境オプション] で開いた環境オプション画面の [設定] タブにあります。

image.png

おわりに

結論としては 「デスクトップの自動保存を無効にしたら (なっていたら) *.dsk を手動で削除しましょう」 という事になります。

過去のプロジェクトを開いて Delphi.TStringsFileSystem はファイルシステムではありません というエラーが出る時も *.dsk の削除で解決すると思います。

プロジェクトをバージョン管理している (複数人でプロジェクトファイルを共有している) 場合には、[デスクトップの自動保存] を無効にした上で *.dsk ファイルは除外しておいた方がいいかと思われます。

繰り返しになりますが、古いプロジェクトに *.dsk が存在したら真っ先に削除するのがトラブル回避のセオリーです。デスクトップの自動保存も外しておくとトラブルに遭遇しにくくなります。

12
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?