艦これ2024早春イベお疲れ様でした)、たまに えびバイク など




Delphi

おはようございます。今日も良い天気です。納入したプログラムのお返事が戻ってくるまで暇なので、昨日の続きをやりましょう。

  1. IRCで特定のキーワードに反応してDLLを起動。
  2. IRCからキーワード以降の文字列をDLLで受け取る。
  3. DLLで文字列を編集して判定ツールに渡しその結果を戻り値にする。
  4. IRCに結果を表示。

…までのプロトタイプは出来ました。
今、ひっかかっているのは3.です。ここでを実際には

3.1 IRCから文字列を受け取り、パラメータ部分を切り出す。
3.2 Perlの判定ツールにパラメータを渡す。
3.3 Perlの結果を受け取ってIRCに渡す。

のようにしたいのです。しかし、DelphiからPerlの判定ツールを起動する方法が判らなくて色々調べています。Perl自体はコマンドプロンプトから実行できるので、つきつめればDelphiからコマンドプロンプトを起動する事ができれば良いのです。
VisualBasicでいうところの「Shell」コマンドに該当する命令をDelphiのヘルプで探しているのですが、どうも見当たりません。バッチを実行できれば、
  判定ツール.pl 実際に渡したいパラメータ > 結果.Txt
のようにリダイレクトして、結果.Txtを読み込んでDLL戻り値にできます。

一番肝心のところなので、もう少し探してみましょう。APIを使うShellExecute命令というのがあるらしいですね。そして
http://hp.vector.co.jp/authors/VA026252/tips/delphi_anonymous_pipe.html
こんな良いページも見つけてしまいました。参考にさせていただきましょう。おっと、もっと便利な関数を提供してくださっているHPを見つけました。
http://homepage2.nifty.com/_omp/
こちらの
http://takamichie.at.infoseek.co.jp/warehouse/units/index.html
RunAs関数を使わせていただくことにしましょう。ありがとうございます。

これで判定ツールにパラメータを渡して結果をテキストファイルにリダイレクトするところまで出来ました。あとはテキストファイルを読み込んでIRCへの戻り値にするだけです。今日はこのあたりにしておきましょう。また続きは今度です。