As far as what's going on, there's probably an OLE/ActiveX/COM/DCOM control that is not registered on the target machine (these don't have to contain "ole" in the name).

As far as how to find it, here are three techniques; unfortunately they will probably not work if the OLE problem happens during program initialization, but should work if there is delayed binding.

1) When the exception is thrown, it probably says something like "in module ElkForPatents.exe at 9999999". Use that 9999999 number in your Delphi 7 debugger to find where the exception is happening (run the program, set a breakpoint anywhere to go into the debugger, then use Search/Find Error [or it may be Search/Go To Address, been a while since I used D7] and type the 9999999 number into the dialog). This may not work perfectly, especially if the source code in the debugger is not identical to what is on the target machine (i.e. if you've made _any_ changes to the source code from the version that threw the exception, this probably won't point you to the right place), but the address may also point to somewhere outside the program space, in which case it won't help you.

2) Incorporate MadExcept or EurekaLog into the program to produce a stack trace on the target machine that can be sent to you so you can see where the problem is.

3) Pepper your code with ShowMessage statements of the form "Reached checkpoint 1", "Reached checkpoint 37", etc. The problem will be between the last ShowMessage displayed to the user and the next one. Then pepper the area between those two checkpoints with more ShowMessages, recompile, and rerun. It should only take 3 iterations to pinpoint the problem to within a few lines of code. There should be a ShowMessage before the very first line of the program; if that ShowMessage does not appear, then the problem is in initialization.


At 01:11 PM 8/23/2014, MetaSemantics wrote:
Using D7, I am able to build a program
ElkForPatents.exe, and using InnoSetup, I can
generate a setup executable, ELK4PatentsSetup.exe,
which I uploaded to my web site.  If you would
like to try the setup program, it can be installed
from

www.EnglishLogicKernel.com/ELK4PatentsSetup.exe

which offers a setup program for a 30 day free
trial version.  That is the one I am having
trouble with EOleSysError exceptions with.

But when I run that setup program on Win 8
machines, I get the message "EOleSysError" which
on google search, indicate an unregistered class
in win 8.  I have no problem at all on Win  7
machines - it installs just fine there.

There are two programs installed in the Elk for
Patents folder, which is created under the Program
Files/Elk for Patents/ElkForPatents.exe and its
sister program
Program Files/Elk for Patents/DownloadPatents.exe,
which aggregates patents to keep from
interactively waiting for web site downloads.

DownloadPatents.exe works fine on Win8 machines as
it does on Win7 machines.  It's only
ElkForPatents.exe which throws the exception.
That is why I took out all the Q* and *Ole* units
mentioned in the Uses clauses n ElkForPatents.dpr
and the unit *.pas files.   I removed any Q* units
from my source files, and removed any reference
with the word "Ole" in it from the uses clauses as
well.  Yet the EOleSysError exception keeps
getting thrown.

I can't debug the setup exe, and I don't want to
install D7 on the Win 8 machine to run in debug
mode there.  Is there another way to figure out
what is going wrong and generating the
EOleSysError exception?

Suggestions appreciated,
-Rich

Sincerely,
Rich Cooper
EnglishLogicKernel.com
Rich AT EnglishLogicKernel DOT com
9 4 9 \ 5 2 5 - 5 7 1 2


_______________________________________________
Delphi mailing list
[email protected]
http://lists.elists.org/cgi-bin/mailman/listinfo/delphi

_______________________________________________
Delphi mailing list
[email protected]
http://lists.elists.org/cgi-bin/mailman/listinfo/delphi

Reply via email to