4.19.2008

Indyのバカ!

Delphiでネットワーク関連のアプリを書いていたところ、ネットワークが切断している上体で、Indyコンポーネントがとあるエラーを投げてくることを確認。
エラーの型はEIdSocketError

さっそくそれを捉えるために、try..except文を書く。
on E:EIdSocketError do ...

とすると、ビルドを通らない。どうやらEIdSocketError型が定義されていないってことらしい。
で、早速Indyのヘルプを検索。
すると、
EIdSocketError

Exception raised for Socket errors.

EIdSocketError = class(EIdException)

Unit

IdException

Description

EIdSocketError is an EIdException descendant that represents an exception class raised when a general socket error occurs. EIdSocketError is used to represent non-protocol specific socket errors that originate from the protocol stack, and provides the LastError property to reflect the numeric error number.

てなことらしく、IdExceptionuses節に追加。
ここまでは良かった。

が、ビルドを通らない!IdEceptionは確かにusesしているはずなのに、何度やってもビルドを通らない!
ネット上にも解決策がなかったので、Indyのソースを検索。
すると、どうやらEIdSocketErrorはIdStackで定義されているらしい。

あじなまねを。。。!!!
uses IdStack;として解決。
ドキュメントとソースの不一致に悩まされるとはこのことか。

0 件のコメント: