4

これらの状況でDelphiXE2アップデート4で実行可能ファイルをデバッグすると、エラーについてさらに説明されているエラーが発生します。

  • これは、システムパス(ユーザーパスではなく)にあるWebShperemqic.dllに依存します。C:\Program Files \IBM\WebSphere MQ\bin\mqic.dllC:\Program Files\IBM\WebSphere MQ\bin
  • Run-> Parameters-> Debugger-> Environment Block- >のオーバーライド環境変数を使用してデバッグされていますUser overrides
  • Including System Variables同じプロパティページでチェックされます

これはエラーです(「システムエラー」とマークされたWindows DLLロードエラーです)。

コンピュータにmqic.dllがないため、プログラムを起動できません。この問題を解決するには、プログラムを再インストールしてみてください。

いくつかの注意:

  • 私は通常のユーザーとしてデバッグします(これはとにかく通常の方法ですが、この場合、クライアントのポリシーのために管理者になることはできません)。
  • 環境変数を削除するとすぐに機能します(ただし、実際に情報が必要なため、プログラムはバーフします)。
  • Delphiを起動する前に環境変数を指定するのは面倒ですが、一時的な回避策として実行できます(さまざまなシナリオをテストするために、デバッグ中にその変数を頻繁に変更する必要があります。Delphiの起動/シャットダウン時間はこれを面倒にします)。
  • 環境変数がないとできないのは、ソースコードがないアプリケーションに必要であり、とにかく段階的に廃止されるのに間に合うように書き直すことができないためです。

これは、イベントログに表示されるものです。

Faulting application name: CAS400NTMQ.exe, version: 1.1.4639.52512, time stamp: 0x50508180
Faulting module name: ntdll.dll, version: 6.1.7601.17725, time stamp: 0x4ec49b60
Exception code: 0xc0000005
Fault offset: 0x0005333f
Faulting process id: 0x4b20
Faulting application start time: 0x01cd90e36bb90816
Faulting application path: C:\Users\...\bin\CAS400NTMQ.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: a9853965-fcd6-11e1-ae66-78e3b5ca2514

質問:上記で使用しているものとは別の解決策または簡単な回避策はありますか?

4

2 に答える 2

6

Andreas Hausladen の最新のブログ投稿彼の回答はこちらによると、この XE2 のバグは IDEFixPack によって処理されています。XE3 では問題が修正されているため、XE3 では必要ありません。

したがって、このマシンにIDEFixPackをインストールすることができれば、これが最も効果的な回避策であると思います。IDEFixPack をインストールできない場合でも、この回答は他の読者に役立つ可能性があります。

于 2012-09-12T19:22:46.423 に答える
5

ユーザーがオーバーライドした環境変数を使用した Delphi XE2 の処理に問題があります。サンプル アプリを見てみましょう。

program Project1;

{$APPTYPE CONSOLE}

uses
  System.SysUtils;

begin
  Writeln(GetEnvironmentVariable('PATH'));
  Readln;
end.

これにより、デバッガーが不足している場合、またはユーザーオーバーライド環境変数がない場合に、パスが正常に出力されます。しかし、Run->Parameters->Environment Block で環境変数を導入するとすぐに、空の文字列が出力されます。

可能な回避策は、必要な変数 (この場合は「PATH」) をオーバーライドすることです。その後、プログラムは再び正しいパスを出力 (および場合によっては使用) できます。明らかに、これはかなり限定的な回避策です。ユーザーオーバーライドを使用すると、失われるのは「PATH」だけではありません。サンプル プログラムはまだ 'APPDATA' を出力できません。

Delphi の以前のバージョンには、この問題はないようです。QC に関するレポートがあります:ビルド 17.0.4625.53395 で「修正済み」として閉じられているシステム変数を含めるはもう機能していません。

于 2012-09-12T17:48:14.123 に答える