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