0

Delphi 6で作成され、Indy8を使用したプロジェクトがあります。このプロジェクトをDelphi2005にアップグレードして、Indy10を使用する必要があります。

Delphi 2005で、古いIndyコンポーネントを含むフォームを開くと、次の2つのエラーが発生します。

プロパティOnLogItemが存在しません

プロパティターゲットが存在しません

これらのエラーは両方とも、IndyのTIdLogDebugコンポーネントに関係しています。

TIdLogDebugを使用する代わりに、代わりに使用する必要があると聞きましたTIdLogEventOnLogItemただし、このコンポーネントにはandTargetプロパティがありません。

Indy8のコンポーネントのイベントTIdLogEventを置き換えるIndy10のコンポーネントでどのイベントハンドラーを使用する必要がありますか?OnLogItemTIdLogDebug

4

1 に答える 1

3

TIdLogDebugそれ自体は Indy 10 にも存在しますが、Indy 8 のものとは大きく異なりTIdLogDebugます。 TIdLogDebugIndy 9 以降では、TargetプロパティやOnLogItemイベントはもうありません。

Indy 8TIdLogDebugは Indy の唯一のロギング コンポーネントであり、複数のタイプの出力 (ファイル、デバッガー、およびイベント) をサポートしていました。TIdLogFileIndy 9 では、その機能が、TIdLogDebug、およびコンポーネントに分割されましTIdLogEventた (そして、新しいTIdLogStreamコンポーネントが追加されました)。

Indy 9 以降では、このTIdLogEventコンポーネントが正しい代替品として使用されます。 、、およびイベントTIdLogEventがあります。Indy 8 では、データ フローのさまざまな方向が区別されず、すべてが 1 つのイベントに集中していました。データ フローの各方向のログ メッセージには、異なるプレフィックスがありました。Indy 9 以降では、方向ごとに個別のイベントが使用されるようになったため、古いイベントを直接置き換えるものはありません。新しいイベント モデルに適合するようにコードを更新する必要があります。OnReceivedOnSentOnStatusTIdLogDebugOnLogItemOnLogItem

于 2012-04-19T22:16:02.537 に答える