過去のソフト対応のためDelphi2007を使用しています。
Windows7までは問題無いのですがWindows10に環境を移行したところ
F9による実行にものすごく時間がかかります。
Windows7(64bit)環境:一瞬
Windows10(64bit)環境:規模にかかわらず4秒
ログを確認したところこれまで一瞬で読み込めていたモジュール類のロードが
目視できるほどの遅さになっており時間がかかっているようです。
dpr以外のプロジェクト関係を消して再コンパイルしても現象は変わりません。
実行したソフトもアクティブにならず裏で動きます。
古いバージョンなのでなんともならないかもしれませんが
原因などありましたらお願いします。
OS:Windows10
Delphi2007
Delphiの更新とbordbk105N.dll関係のレジスタ登録済み
バージョン表示の一部抜粋
December 2007 Update
IDE Fix Pack 2007 3.0
https://cc.embarcadero.com/item/27521
はあたってますか?
その圧縮ファイル内のbordbk105N.dllをDelphiのbinフォルダに上書きして
ついでに管理者権限のコマンドプロンプトから実行して登録は行いました。
あとはこの件ですかね?
https://stackoverflow.com/questions/45356290/delphi-32-environment-becomes-very-slow
解決はしてないんですけど…(Microsoft側の問題)
情報ありがとうございます。
どうやらそれっぽいですね。
新規のVCLアプリケーションを作って実行するだけでも遅くなるようです。
実行→無地のフォームが表示され マウスが待機を示す表示に→4秒後にフォームの描画が完了
終了も同じように待たされます。
Windows10へのインストールも .NETのインストールでエラーが出て出来ないぐらいなので
対応は望み薄といったところでしょうか?
上記のエラーはDelphi XE系を入れるときに .NETがインストールされるので
その後にインストールする事で回避しました。
Delphi 2007はおそらくあと5年や10年は必要とされるでしょうからね…なんらかサポートがほしいというのは同感です。
最後のShiftJISバージョンとはいえ名称からして12年もの前のコンパイラに
修正を求めるというのも酷かも知れませんね。
Windows7まで対応してくれたことに感謝せねば
これを期に最新のコンパイラに移行すべきなのかなと思います。
情報ありがとうございました。
こちらでも調査して解決方法がわかれば書き込ませて頂きます。
とりあえず解決とします。
最新の環境に移行するほうがいい、というのはまぁその通りなのですが、必ずしもそれが正解というわけでは
ないこともある、というあたりが問題かと。既存のANSI系のプログラムをUnicode系に移すとき、簡単に
できるものとそうでないものがありますからね。
Windows10に他のDelphiのバージョンを色々入れてみましたがDelphi2007特有ではなく
1〜2秒の誤差はあるものの、モジュールのロードに時間はかかるようです。
【Windows10】
Delphi2007:5秒
DelphiXE2:3秒
DelphiXE5:2秒
【Windows7】
Delphi2007:0秒
DelphiXE2:0秒
DelphiXE5:インストールしてない
Windows10環境の方が性能の良いPCです。
DelphiXE5を試しにインストールしようとするとエラー出まくりで焦りました。
.Netを別途手動インストールが必要でDelphiデータベースを入れると本体が起動しないようです。
Windows 10Pro Ver1809
自分の環境でも同様の問題があったため、前述のリンクで紹介されていた対策をとってみました(元リンクにあるOSの更新は適用済であると思います)。
http://blog.marcocantu.com/blog/2017-june-delphi-packages-creators-update.html
1. アンチウイルスソフトでbds.exeを除外アプリとして登録する
→効果有り
NOD32 12.1.31.0 ですが、リアルタイムスキャンの検査対象外プロセスとすることで有意にデバッグして実行が早くなりました。リスクとのトレードオフですが。
2. affinity mask を指定する
start /affinity 2 {実行パス}\bds.exe
→効果有り
こちらもデバッグして実行がやや早くなりました。
両方の対応をすることで、だいぶ改善されるようになりました。ご参考まで。
情報ありがとうございます。
偶然同じセキュリティソフト(Endpointですが)だったので順番に試して見ました。
1.bds.exeを除外アプリとする
→効果無し
RadStudio以下全てのファイルを除外しましたが効果ありませんでした。
1-1.そもそものセキュリティを止める
→効果無し
2. affinity mask を指定する
Windows10管理者権限コマンドプロンプトで下記を実行
start /affinity 2 "" "c:\Program Files (x86)\CodeGear\RAD Studio\5.0\bin\bds.exe"
→効果無し
2-1.試しにCPUクロックを変えてみました。
→効果無し
何かの負荷ではなく「モジュールをロードする」ことに異常に時間がかかっているようです。
動作に問題のないWindows7も含めてメディアは SSDです。
元リンクにあるOSの更新といのはどれのことでしょうか?
リンク先の英語を読むのに少々手間取っています。
そうですか、改善しませんでしたか。お役に立てなくてすいませんでした。
同じアンチウイルスソフト(ESET)ということですが、私が試したときにも
「検出エンジン」の「除外|検査対象外とするファイル及びフォルダパス」に
bds.exeを指定したり、NOD32の「保護を一時停止」するだけではだめでした。
「リアルタイムファイルシステム保護」の「プロセスの除外|検査対象外とするプロセス」に
bds.exeを指定したときに効果がありましたので、もしこちらを指定していなければお試しください。
OSの更新、というのはMarcoさんの記事にあった「Second Solution: Microsoft to Fix the Loader」での
「Windows 10 Fall Creators Update の Insider Build では対策済」との記載から、
現在リリースされているWindows10では対応済であると思っていたのですが、
その後のコメントによると対応されているとは限らなかったようですね・・・
通りすがりさんの意見がヒントになり、多分解決しました。
Delphi2007でデバッグするアプリケーションがウイルス検査されて実行に時間がかかっているのを疑いましたが
ホワイトリストに入れても解決しませんでした。
セキュリティソフトを無効にしても解決しなかったので違うのかもと思いましたが
もしかするとと思い「フィルタリングモード」を「自動」から「対話」にして
どこで引っかかっているのか確認したところ
「bds.exe が xxx.exe を実行しようとしています」
と警告が出るので、これをホワイトリストに追加することで解決しました。
この現象、過去のESETでは度々発生していたのですが最新版の環境でも起きるとは・・・
対話にすると確認メッセージがすごいのでしばらくは大変ですが
これで過去のソフトの対応もストレス無く対応出来そうです。
セキュリティ対策ソフト:ESET Endpoint 7.0.2100.5
ツイート | ![]() |