はじめに
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 | 保存とリカバリ]
にあります。
See also:
・10.3 Rio 以前のガリレオ IDE
オプション画面の [環境オプション]
にあります。
See also:
・Delphi 7 以前の旧 IDE
[ツール | 環境オプション]
で開いた環境オプション画面の [設定]
タブにあります。
おわりに
結論としては 「デスクトップの自動保存を無効にしたら (なっていたら) *.dsk を手動で削除しましょう」 という事になります。
過去のプロジェクトを開いて Delphi.TStringsFileSystem はファイルシステムではありません というエラーが出る時も *.dsk
の削除で解決すると思います。
プロジェクトをバージョン管理している (複数人でプロジェクトファイルを共有している) 場合には、[デスクトップの自動保存] を無効にした上で *.dsk
ファイルは除外しておいた方がいいかと思われます。
繰り返しになりますが、古いプロジェクトに *.dsk
が存在したら真っ先に削除するのがトラブル回避のセオリーです。デスクトップの自動保存も外しておくとトラブルに遭遇しにくくなります。