アプリケーションの起動時に自動的にサーバーに接続処理を行っていますが、
connectに失敗したときの処理に頭を悩ませています。
try
TIBDatabase.Connected := True;
except
ShowMessage('データベースに接続できません');
end;
だと、サーバーが見つからないとしばらく反応待ちになります。
また、復帰した後もアクションリストの手続きが不能になってたりします。
早急にオンライン・オフラインを判断し、機能不全を防ぎたいのですが、
皆さんはどういう処理を入れているのでしょうか?
アドバイスをお願いします。
とりあえずサーバーに PING を打つとかですかねぇ...。
但し、Indy で Ping を打つには管理者権限が必要になりますので、
IcmpSendEcho() を使った方がいいと思います。
https://support.microsoft.com/ja-jp/kb/170591
http://izawa-web.com/xping/xping.html
http://ht-deko.com/delphiforum/?vasthtmlaction=viewtopic&t=1055.0
> TIBDatabase.Connected := True;
Interbase / Firebird (IBX) ならば、
IBDatabase.TestConnected()
を使えば若干速いかもですね。
??< 663. ]
Solved: on
回答ありがとうございます。
おっしゃるとおり、FirebirdをIBXで使用しています。
TestConnectedの方が早そうですが、IndyのPingも覚えておいた方が良さそうなので、チャレンジしてみます。
ありがとうございました。
ちなみに fbconverter の接続チェックは、
IBX の TestConnected() と同じ事をやっています (Zeos ですけれど)。
https://github.com/tomneko/fbconverter
ツイート | ![]() |