8

ケース

INDY を Delphi XE の最新バージョン (Update 1) に更新しようとしているので、indy.fulgan.com/ZIP から最新の INDY10 ファイル (Indy_4545.zip) をダウンロードしました。

パッケージは正常にコンパイルされ、アバウト ボックス ダイアログに新しいバージョン 10.5.8.0 が表示されるようになりましたが、IDE の再起動後に次のようなメッセージが表示されました。

@Idhttp@TIdCustomHTTP@GetRequestHeaders$qqrv en la biblioteca de vínculos dinámicos IndyProtocols150.bpl.

私の英語への無料翻訳:

プロシージャ @Idhttp@TIdCustomHTTP@GetRequestHeaders$qqrv のエントリ ポイントが見つかりません ダイナミック リンク ライブラリ IndyProtocols150.bpl で見つかりません。

古い IdHTTP.pas と新しい IdHTTP.pas を簡単に比較した後、いくつかのメソッドの名前変更を含め、TIdCustomHttp クラスに多くの変更を見つけました。

  • GetResponseHeaders から GetResponse へ
  • GetRequestHeaders から GetRequest へ
  • SetRequestHeaders から SetRequest へ

this および other およびクラス インターフェイスの public/published メソッド会社の変更に伴い。

更新後、dclcxPivotGridOLAPD15.bpl を含む多くのパッケージの読み込みに失敗しました。これは、bpl で不足しているメソッドを検出した dclDataSnapServer150.bpl に依存しています。

私の知る限り、dclDataSnapServer150.bpl を再コンパイルできません (他の失敗したパッケージもあるかもしれませんが、ここでやめました)。

IDE での DataSnap と DevExpress のサポートは、私の日常の必需品です。

質問

  1. Delphi XE 用の最新の INDY に更新するための事前に確立された安全な方法はありますか?
  2. そうでない場合は、古いパブリック メソッドを作成し、実装部分で新しいメソッドを呼び出すことによってソース コードをパッキングするだけで、安全な側にいますか?
  3. それとも、次の Delphi マイナー/メジャー リリースまで INDY 10.5.7 に固執していますか?
4

4 に答える 4

12

[Delphi XE に Indy をインストールする]

はい、インストール プロセスは面倒ですが、正しく行うことには価値があります。

これは、SSL を除くすべての Indy コンポーネント用です。(私はまだSSLのものを試していません。)

A.) Delphi に付属するすべての Indy ファイルを探して破棄します。Indy プロジェクトは毎日新しいバグ修正で更新されるため、これらは役に立ちません。Delphi が新しい Indy ライブラリの代わりに古いファイルのいずれかを取得すると、さまざまな時点で IDE からクレイジーなエラーが発生し、追跡が非常に困難になります。

私。[コンポーネント] --> [パッケージのインストール] に移動し、「Indy」で始まるすべてのパッケージを完全に削除します。

ii. Delphi を閉じます。

iii. Delphi の Bin フォルダから「dclIndy*.bpl」および「Indy*.bpl」に一致するすべてのファイルを消去します。
(C:\Program Files\Embarcadero\RAD Studio\8.0\bin)

iv。Delphi の Lib サブ フォルダにある「Indy*.dcu」と「Id*.dcu」^^^ に一致するすべてのファイルを消去します。
(C:\Program Files\Embarcadero\RAD Studio\8.0\lib\win32\debug)
(C:\Program Files\Embarcadero\RAD Studio\8.0\lib\win32\release)
^^^ 警告: 「idipids.dcu」や「idoc.dcu」のように「id」の文字で始まる Indy DCU

v. Indy10 ソース フォルダ全体を削除します:
(C:\Program Files\Embarcadero\RAD Studio\8.0\source\Indy10)

B.) http://indy.fulgan.com/ZIP/から最新の Indy10_XXXX.zip をダウンロードし ます (以下の手順のいずれかでこの zip ファイルを使用してコンパイル エラーまたはランタイム エラーが発生した場合は、落胆しないでください!次の日に zip ファイルを再ダウンロードして、もう一度お試しください。この zip ファイルは毎日更新されており、特定の日にバグやエラーが発生する可能性があります。)

C.) System、Core、および Protocols フォルダのみを独自の Indy ライブラリ フォルダに抽出します。元。
(c:\MyDelphiComponents\Indy\Core)
(c:\MyDelphiComponents\Indy\System)
(c:\MyDelphiComponents\Indy\Protocols)

D.) Delphi を起動します。失敗したすべてのパッケージ ダイアログを無視する: これらは、Indy に依存する Embarcadero パッケージです。(すべてのエラーで [OK] をクリックし、失敗したパッケージを再度ロードしないことを示します。)

E.) [オプション] --> [環境オプション] --> [Delphi オプション] --> [パスの参照] に移動します - $(BDS)\Lib\Indy10 で始まるパスを削除します

F.) [オプション] --> [環境オプション] --> [Delphi オプション] --> [ライブラリ パス] に移動します。手順 C の新しいシステム、コア、およびプロトコル フォルダを Delphi のライブラリ パスに追加します。

G.)次の 5 つのアクションを順番に実行します: (プロジェクトのアップグレードに関するすべてのダイアログで [OK] と言うだけです。)


重要:

各 dpk をロードした後、各ビルドの前に、次の場所に移動します。

プロジェクト --> オプション --> 説明 --> ビルド コントロール

ラジオボタンを「Explicit Rebuild」に設定します。

(実際、これは任意ですが、私はいつもパッケージを Explicit Rebuild にしています。なぜなら、その方が扱いやすいからです。しかし、他の人がこれについてどう思うか聞きたいです...)


  1. ビルド - System\IndySystem150.dpk
  2. ビルド - Core\IndyCore150.dpk
  3. 最初にビルドしてからインストール - Core\dclIndyCore150.dpk
  4. ビルド - Protocols\IndyProtocols150.dpk
  5. 最初にビルドしてからインストール - Protocols\dclIndyProtocols150.dpk

** すべてのパッケージで「Explicit Rebuild」が設定されていることを再確認してください! **

H.)最後に、[コンポーネント] --> [パッケージのインストール] に移動し、手順 D でオフにした Indy に依存するすべてのパッケージを見つけます。それらを再度アクティブにして、Delphi を再起動します。(新しい Indy が Delphi でリリースされたものからあまり変更されていない場合、それらのパッケージは新しい Indy を使用します!)

++ 注意: これらの Embarcadero パッケージを再アクティブ化してもすぐにエラーが表示されない場合がありますが、後でランダムに表示される場合があります。たとえば、Indy10_4548.zip をインストールしたところ、再アクティブ化されたすべてのパッケージは問題ないように見えました。それから 1 日後、突然、IDE から、TIdCustomHTTP で GetRequestHeaders が見つからず、結果として dclWindowsAzureManagement150.bpl に問題があるというメッセージが表示されました。そのため、IDE でその Windows Azure パッケージを無効にする必要がありました。

于 2011-01-14T18:41:18.053 に答える
7

私の知る限り、Delphi でデプロイされた Indy バージョン、特に新しい Datasnap に強く依存するいくつかのパッケージを失うことになります。

必要なすべてのユニットが利用可能である限り、再コンパイルできない標準パッケージの代わりに使用する onwn パッケージをビルドしてみてください。

IMHO Embarcadero は、Indy のような「不安定な」ライブラリに依存する独自のコードに関する解決策を見つける必要があります。特に、リリースから数か月を超えて Indy からのバグ修正を含む公式の更新をリリースできないため、これはプロの環境では受け入れられません。たとえば、最近、Indy 10.5.5 のメール メッセージの解析でメール アドレスが切り捨てられることがわかりましたが、10.5.8 では発生しません。もちろん、10.5.5 の動作は受け入れられません。アップグレードせざるを得ません...

于 2010-12-31T13:04:43.223 に答える
4

他の人の答えと主にレミーのコメントから:

Delphi XEUpdate1でDataSnapを壊さずにIndy10.5.8.0をインストールすることはできません。

于 2011-01-31T15:20:40.537 に答える
2

私自身は Delphi XE を使用していませんが、2010 バージョンを使用しています。このスタック オーバーフローの投稿の助けを借りて、Indy コンポーネントを最新バージョンにアップグレードすることができました: Delphi 2009 での Indy 10 のステップ バイ ステップ アップグレード

質問が2009年のものであることは知っていますが(ただし、回答は2010年もカバーしています)、バージョン2010でうまくいったので、あなたにも役立つと思います. 良いヒントもいくつかあるので、コメントを読むことをお勧めします。お役に立てれば。

于 2010-12-30T23:46:19.277 に答える