Reputation: 24473
I get the error mentioned further on error when debugging an executable in Delphi XE2 update 4 under these circumstances:
mqic.dll
from WebShpere that is in C:\Program Files \IBM\WebSphere MQ\bin\mqic.dll
and C:\Program Files\IBM\WebSphere MQ\bin
is on the system path (not on the user path).Run
-> Parameters
-> Debugger
-> Environment Block
-> User overrides
Including System Variables
on the same property page is checkedThis is the error (it's a Windows DLL load error marked "System Error").
The program can't start because mqic.dll is missing from your computer. Try reinstalling the program to fix this problem.
A few notes:
This is what the event log shows:
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
Question: is there another solution or easier workaround than what I'm using above?
Upvotes: 4
Views: 2056
Reputation: 612934
According to Andreas Hausladen's latest blog post, and his answer here, this XE2 bug is taken care of by IDEFixPack. And is not needed in XE3 since XE3 fixes the problem.
So I suspect that may be the most effective workaround if you can manage to get IDEFixPack installed on this machine. Even if you can't get IDEFixPack installed, then this answer could still be useful to other readers.
Upvotes: 6
Reputation: 54802
There's something wrong with Delphi XE2's processing with user overridden environment variables. Take the sample app:
program Project1;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
begin
Writeln(GetEnvironmentVariable('PATH'));
Readln;
end.
This outputs the path fine when run out of the debugger, or when there's no user override environment variable. But as soon as you introduce an environment variable in Run->Parameters->Environment Block, it outputs an empty string.
A possible workaround seems to be to override the required variable, in this case 'PATH'. Then the program can output (and possibly use) the correct path again. Obviously this is a fairly limited workaround. Once you employ a user override, it's not only 'PATH' you lose. F.i. the example program still won't be able to output 'APPDATA'.
Previous Delphi versions does not seem to have this problem. There's a report on QC: Include System Variables isn't working anymore which is closed as 'fixed' in build 17.0.4625.53395.
Upvotes: 5