26 Jun 12 10:51
We think alike!
First, at this time, the code is Research Code and only I run it. It will advance to Research Code that "other people" run, and then finally a Production Code. Obviously, all the things you said apply to this, especially as it progresses to Production Code.
Part of the Traceback is to provide the require correction information.
In a few cases, I tell the User to "Close old Excel process and press ENTER" and the code resumes.
In most cases, the input is like a Finite Element Program in that there are massive amounts of input required and it is all done via a .INI file. Not a GUI! So if the .INI file needs to be changed, the execution is terminated. So this is Old School right now. Obviously, the Production Code will require a GUI to be constructed.
I have used the IDE debugger in the past, but now, the program runs on "workstations" supported by a "data/source server." The program itself does all the loading of the executables and required data onto the workstation temp area. To run this in the IDE debugger, its a matter of moving the information from the workstation to a dummy area in the "code development PC" and constructing a long command line input in the IDE. It can be done, but I am so familiar with the code, just a few hints and I can usually find the bug.
The main thing I'm looking for is when an OS Exception occurs, it would be nice to have the Line Number but that is not available with Delphi - big loss in my book. So I at least want to know, 1) what routine produced the exception, and 2) what what series of calls lead to that particular running of the routine.
It turns out that I needed an IF statement in the EXCEPT block to differentiate between an OS Exception and a User Input Error that I manage. THe EXCEPT logic is as follows:
1) let emsg hold my E.message information
2) If OS Except, append E.Classname and E.Message to emsg and RAISE,
3) Append My Traceback Location Information Message to emsg and RAISE
Note that when I RAISE a User Input Error, it has a Class of "My"Error and I build the E.Message where I RAISE that Exception in the TRY area.