私はHTTPサーバーで作業しており、Indyをで使用TIdHTTPWebBrokerBridge
していTWebModule
ます。すべてのサーバー機能を単一のコンポーネントにカプセル化しています。これには、Indyサーバーコンポーネントとそれに対応するWebモジュールが含まれます。ただし、Webモジュールにそれが呼び出されたコンポーネントを認識させる方法を理解するのにいくつかの問題があります。
私がこのコンポーネントを持っていると仮定します:
type
TMyComponent = class(TComponent)
private
FServer: TIdHTTPWebBrokerBridge;
end;
implementation
uses
MyWebModule;
リクエストハンドラーを設定してこれを初期化する必要があることはわかっています。initialization
このユニットにセクションを追加することで、これを処理しました。
initialization
if WebRequestHandler <> nil then
WebRequestHandler.WebModuleClass:= WebModuleClass;
次に、別のユニットにWebModuleクラスがあります。
uses
MyWebServer;
type
TMyWebModule = class(TWebModule)
private
FOwner: TMyComponent;
end;
このWebモジュールにあるプライベートフィールドに注意してくださいFOwner: TMyComponent
。これは私がどこに行くべきかを理解するのに苦労しているところです。これを適切な所有者に割り当てるにはどうすればよいですか?WebモジュールはIndyHTTPサーバーによって自動的に作成および管理されるため、私が知る限り、そのような設定を行うための制御はありません。
その所有者にアクセスする必要がある理由は、Webモジュールが読み取ることができる必要があるプロパティが設定されているためです。たとえば、コンポーネントにあるプロパティの1つRootDir
は、ファイルの読み取り/書き込みを行うルートディレクトリです。Webモジュール内からこのプロパティを読み取れるようにする必要があります。
Webモジュールがその所有者コンポーネントのプロパティを読み取れるようにするにはどうすればよいですか?FOwner
または、一般的に、このプライベートフィールドを、インスタンス化された場所からコンポーネントのインスタンスに割り当てるにはどうすればよいですか?