1

ご質問に従い、 Indy10のソースコード(IdHTTPProxyServer.pas)を改変してみます。しかし、indy10 プロジェクトの再コンパイルに失敗しました... 私の IDE は XE2 で、以下は私が行った手順です..

  1. メニュー - >コンポーネント - >パッケージのインストールで、パッケージ「Indy 10 Core Design Time」および「Indy 10 Protocols Design Time」を削除します

  2. IndyProtocols.dpk を開く

  3. IdHTTPProxyServer.pas に変更を加える

  4. コンパイル

そして、「rtl160.bpl のアクセス違反」というエラーが表示されることもあれば、「XXXXXX の coreide160.bpl の例外 xxx(任意のコンポーネント)」というエラーが表示されることもあります。

私は開発環境にあまり詳しくないので、何が問題なのかまったくわかりません...どんな助けも感謝します。

ありがとう


すべての返信に感謝します。あなたのすべての提案は、開発環境をより実感させてくれます。最後に、プロジェクトには複数の開発者がいるため、@Marcus Adams の回答を受け入れます。IDE のソース ファイルは変更しない方がよいでしょう。

4

4 に答える 4

3

通常、ソース コードを変更するときは、変更したソース ファイルをプロジェクト フォルダーに保存します。そうすれば、そのユニットだけが再コンパイルされます。

特定の .pas ファイルを変更した場合は、それをプロジェクト フォルダーに保存して再コンパイルするだけです。元の Delphi (および Indy) ソース ファイルはそのままにしておきます。

これにより、更新後に変更が失われず、変更が他のプロジェクトに影響を与えないため、将来の更新も容易になります。

于 2012-07-23T14:20:38.543 に答える
1

バンドルされたバージョンの Indy にリンクする VCL デザインタイム パッケージ (DataSnap に関係するもの) がいくつかあります。indy を更新する場合は、次のことを行う必要があります。

  1. それらのパッケージを見つけて (頭の中で思い出すことはできませんが、それについては後で連絡します)、インストール済みパッケージのリストから削除します。
  2. バンドルされている Indy パッケージをインストール済みパッケージ リストから削除します。
  3. バンドルされている Indy dcu ディレクトリの名前を変更して、使用する Indy dcu のインスタンスについて IDE が混乱しないようにします。
  4. バンドルされている Indy bpl ファイルの名前を変更して、IDE が間違ったファイルをロードしないようにします。

そうして初めて、新しいバージョンの Indy をコンパイルする必要があります。

于 2012-07-23T13:54:24.847 に答える
1

コンポーネント/パッケージのコンパイル手順をスキップして、実行時に Indy コンポーネントを作成するだけです。

Indy Lib Core/Protocols/System パスをプロジェクト検索パスに追加すれば完了です。

于 2012-07-23T16:23:07.190 に答える
1

あなたが言及したエラーはどちらもコンパイラエラーではありません。コンパイラ自体が原因である可能性は低いです。それらはおそらく、コンパイルに至るまでの呼び出しチェーンのどこかから来ています。

短期的な解決策は、コマンド ラインからコンパイルすることです。MSBuild は、Delphi が内部で使用するビルド エンジンです。

  1. IDE で通常どおり Indy ファイルを編集し、変更を保存してから IDE を閉じます。
  2. スタート メニューからRad Studio コマンド プロンプトを開きます。これにより、コマンド ライン ビルドを実行するための適切な環境変数が設定されます。標準のコマンド プロンプトを使用して rsvars.bat を実行することもできます。
  3. cdディレクトリを IndyProtocols.dpk の場所に変更するために使用します
  4. タイプmsbuild IndyProtocols.dpk /target:Build /p:config=Release

デバッグ バージョンを実行する場合は、に変更/p:config=Releaseするだけ/p:config=Debugです。プロジェクト ファイルは xml であり、大文字と小文字が区別されるため、msbuild を使用する場合は大文字と小文字が区別されることに注意してください。

また、IDE に同梱されているライブラリを直接変更しないようにしてください。提供されたライブラリに特定のプロジェクトで修正が必要なバグが見つかった場合は、通常、問題のあるファイルをプロジェクトのフォルダーにコピーし、そこで変更を加えることで解決できます。また、他の依存ファイルもいくつかコピーする必要があります。このアプローチを採用すると、コンパイラは次のようなエラーでコピーする必要がある従属を通知します。Unit * was compiled with a different version of *.*


IDE を本当にデバッグしたい場合は、試すことができますが、IDE 全体で使用されるrtlcoreideパッケージは両方ともリリース バージョン (デバッグ情報なし) としてコンパイルされているため、表示されているエラーの原因を特定するのは難しい場合があります。

いずれにしても、プロジェクト マネージャーに読み込まれた IndyProtocols.dpk を使用して、IDE の 2 番目のインスタンスを実行できます。次にRun > Attach to Process、最初の IDE インスタンスから使用して、デバッガーを 2 番目の IDE インスタンスにアタッチします。その後、2 番目の IDE インスタンスから IndyProtocols.dpk をビルドしてみてください。すべてが期待どおりに進むと、デバッガーはエラーをキャッチし、エラーが発生した場所でブレークできるようにするので、掘り下げることができます。

于 2012-07-23T14:25:48.880 に答える