loginfoでログファイル名が取得できない
報告どうもありがとうございます。
Windows7 Professionalですが、再現しませんでした。
流した時間が足りてなかったかもしれないので、再度再現試験してみる予定です。
本件はちょっと原因がよく分かりません。
DdeClientTransaction関数でタイムアウト時間(5秒)が足りず、関数がタイムアウト
しているのかもしれません。関数がエラーしても、DdeAccessData関数でデータが
取得できるとのことなので、処置をするにもどうしたものか思案中です。
yutakaponさん、着手いただきありがとうございます。
DdeGetLastError関数でのエラー判定が不要ということはないでしょうか?
Dde関数の戻り値がエラーとなった時に、その理由を知るためにDdeGetLastError関数を使用するものと思っていたのですが...。
None への返信
DdeGetLastError関数でのエラー判定が不要ということはないでしょうか? Dde関数の戻り値がエラーとなった時に、その理由を知るためにDdeGetLastError関数を使用するものと思っていたのですが...。
分かりました。ifの条件式にバグがありますね。
指摘ありがとうございます。直します。
修正しました。以下にアーカイブも置いています。
yutakaponさん、ご苦労様です。
アーカイブ版で数時間動作を数回試し、事象が発生しないことを確認しました。
お忙しい中、ご対応いただき、どうもありがとうございました。
動作確認どうもありがとうございました。
今回もソースコードのチェックをしていただき、とても助かりました。
ちなみに、当方の環境(Win7 Pro)では、再現試験を3時間行いましたが、
再現しませんでした。何か発生条件があるのかもしれません。
VMware Workstationで仮想マシンを作成し、Windows 7 Professional with Service Pack 1のインストール直後の状態と、Windows Update最新の状態とで試したところ、両方で再現しました。
TeraTermだけをインストールした状態ですので、お時間があるようでしたら、お試しいただければと思います。
情報どうもありがとうございます。
参考にさせていただきます。
■事象
次のTERATERM.INIを"ライブラリ\ドキュメント"ディレクトリに配置し、 TEST.BATを実行し続けると、LOGFILE_NAMEが取得できない時がある。 事象は数分で発生する時もあれば、数時間経ってから発生する時もある。
■環境
TeraTermバージョン: 4.92
OS: Windows 7 Enterprise with Service Pack 1 で、Windows Updateは最新の状態。
■原因
ttmdde.cのGetTTParamで、DdeClientTransactionとDdeGetLastErrorの戻り値は通常、
になるが、まれに になる。DdeGetLastError戻り値がDMLERR_EXECACKTIMEOUTであっても、 後続のDdeAccessDataでログファイル名を取得できるのだが、 GetTTParamではエラーと判定してしまうので、Paramが不定となる。