answerfreak
asked on
Delphi XE2 - Company Business System Application, errors when running on Win 7
I have an application that I develop for my company, that is basically our main business system, including ERP/MRP/CRM, etc.
Recently, I've migrated my development environment to Delphi XE2 (I still develop on a Win XP computer). I use the PDAC VCL component library to connect to a Pervasive Server Engine, via the installed Client Engine on each computer.
Do to the amount of errors that my program is getting, and because I have had no luck in "capturing" and handling the errors with exception handling, I decided to try "MadExcept" within my Delphi project. I love the ability of MadExcept to capture any and all errors and submit "bug reports" to me directly via email. However, I am having a difficult time isolating exactly what is causing the errors, even with the bug reports. I guess I need to go back to school, so that I can read assembler code, or something, but I was hoping by posting one of these "bug reports" someone could give me a clue, to help figure out what is causing the issues. I do know that the issues are sometimes related to Rave reports, and I do not intend to just re-write the reports, as that would be quite an undertaking. Rave is available for XE4, Embarcadero's latest release, so I feel comfortable keeping Rave for my reports.
I'm attaching a file to this post, for review of a couple of bug reports. Please tell me if any of you can decipher these and help me on my way to debugging my application.
TIA,
Brent
bugreport.txt
Recently, I've migrated my development environment to Delphi XE2 (I still develop on a Win XP computer). I use the PDAC VCL component library to connect to a Pervasive Server Engine, via the installed Client Engine on each computer.
Do to the amount of errors that my program is getting, and because I have had no luck in "capturing" and handling the errors with exception handling, I decided to try "MadExcept" within my Delphi project. I love the ability of MadExcept to capture any and all errors and submit "bug reports" to me directly via email. However, I am having a difficult time isolating exactly what is causing the errors, even with the bug reports. I guess I need to go back to school, so that I can read assembler code, or something, but I was hoping by posting one of these "bug reports" someone could give me a clue, to help figure out what is causing the issues. I do know that the issues are sometimes related to Rave reports, and I do not intend to just re-write the reports, as that would be quite an undertaking. Rave is available for XE4, Embarcadero's latest release, so I feel comfortable keeping Rave for my reports.
I'm attaching a file to this post, for review of a couple of bug reports. Please tell me if any of you can decipher these and help me on my way to debugging my application.
TIA,
Brent
bugreport.txt
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
It seems an exception occurs in one of the unit's initializaion sections.
Is there an initialization section in the unit ACSIManufacturing?
Is there an initialization section in the unit ACSIManufacturing?
ASKER
That is the source unit of the program. Nothing very special about it.
Here's the code:
Here's the code:
program ACSIManufacturing;
uses
madExcept,
madLinkDisAsm,
madListHardware,
madListProcesses,
madListModules,
Forms,
rsFileVersion,
Dialogs,
Windows,
Classes,
MainUnit in 'MainUnit.pas' {MainForm},
DatamoduleUnit in 'DatamoduleUnit.pas' {DM: TDataModule},
LocateRecordUnit in 'LocateRecordUnit.pas' {LocateRecordForm},
FilterSort in 'FilterSort.pas' {FilterSortForm},
loading in 'loading.pas' {LoadingForm},
modelform in 'modelform.pas' {ModelsForm},
neworderunit in 'neworderunit.pas' {NewOrderForm},
Progress in 'Progress.pas' {ProgressBarForm},
aboutunit in 'aboutunit.pas' {AboutForm},
Messagepicklist in 'Messagepicklist.pas' {MessagePickListForm},
NewUserUnit in 'NewUserUnit.pas' {NewUserForm},
SingleEditBoxUnit in 'SingleEditBoxUnit.pas' {SingleEditBoxForm},
OrderCalendarUnit in 'OrderCalendarUnit.pas' {OrderCalendarForm},
newpackunit in 'newpackunit.pas' {NewPackForm},
ReleaseOrders in 'ReleaseOrders.pas' {FormReleaseOrders},
loginform in 'loginform.pas' {FormLogin},
ignoregenericunit in 'ignoregenericunit.pas' {FormIgnoreGenerics},
Printallcopiesunit in 'Printallcopiesunit.pas' {FormPrintAllCopies},
packitempick in 'packitempick.pas' {SelectOrderItems},
MarkOrderShippedUnit in 'MarkOrderShippedUnit.pas' {MarkOrderShippedForm},
createcontainerunit in 'createcontainerunit.pas' {ContainerForm},
MasterComments in 'MasterComments.pas' {FormComments},
CustomMaster in 'CustomMaster.pas' {FormCustomMaster},
RevisionUnit in 'RevisionUnit.pas' {FormRevision},
MarkBacklogUnit in 'MarkBacklogUnit.pas' {MarkBacklogForm},
ChangeARCodeUnit in 'ChangeARCodeUnit.pas' {ChangeARCodeForm},
HelpUnit in 'HelpUnit.pas' {FormHelp},
SingleComboBoxUnit in 'SingleComboBoxUnit.pas' {SingleComboBoxUnit1},
formprintorders in 'formprintorders.pas' {FormPrintOrder},
RecordsFoundForm in 'RecordsFoundForm.pas' {FormRecordsFound},
FormQuickReportMailingLabelUnit in 'FormQuickReportMailingLabelUnit.pas' {FormQuickReport},
ResultsUnit in 'ResultsUnit.pas' {FormResults},
PrintingMainUnit in 'PrintingMainUnit.pas' {PrintingMainForm},
supermodelform in 'supermodelform.pas' {FormSuperModel},
FormQuickReportPurpartsLabelSmallUnit in 'FormQuickReportPurpartsLabelSmallUnit.pas' {FormQuickReport2},
SystemNumberSplitCombineUnit in 'SystemNumberSplitCombineUnit.pas' {FormSystemNumberSplitCombine},
PricePartUnit in 'PricePartUnit.pas' {PricePartForm},
PrintLandscape in 'PrintLandscape.pas' {FormPrintLandscape},
OrderAllocationsUnit in 'OrderAllocationsUnit.pas' {OrderAllocationsForm},
ViewResultsUnit in 'ViewResultsUnit.pas' {FormViewResults},
CellTextEditor in 'CellTextEditor.pas' {CellTextEditForm},
BarcodeLabelsUnit in 'BarcodeLabelsUnit.pas' {BarcodeLabelsForm},
PrintEmployeeTimeClockLabels in 'PrintEmployeeTimeClockLabels.pas' {FormPrintEmployeeTimeClockLabels},
FormNewEmployeeUnit in 'FormNewEmployeeUnit.pas' {FormNewEmployee},
SystemNumberSplitUnit in 'SystemNumberSplitUnit.pas' {FormSystemNumberSplit},
CheckPreviousInstance in 'CheckPreviousInstance.pas',
AttachedFileDesignationUnit in 'AttachedFileDesignationUnit.pas' {AttachedFileDesignationForm},
SetPricedPartsUnit in 'SetPricedPartsUnit.pas' {SetPricedPartsForm},
SendEmailUnit in 'SendEmailUnit.pas' {SendEmailForm},
CloneFOUnit in 'CloneFOUnit.pas' {CloneFOForm},
printingunit in 'printingunit.pas' {PrintForm},
Vcl.Themes,
Vcl.Styles;
var
FV : TrsFileVersion;
Stringlist : TStringlist;
const
VersionFile = '\\AUTCON2\SYS6\DRIVERS\Custom Applications\ACSIManufacturing\version.txt';
{$R *.RES}
begin
//ReportMemoryLeaksOnShutdown := DebugHook <> 0;
LoadingForm:= TLoadingForm.Create(Application);
LoadingForm.show;
LoadingForm.update;
FV := TrsFileVersion.Create;
Stringlist:= TStringlist.create;
Stringlist.LoadFromFile(VersionFile);
if not CheckPreviousInstance.RestoreIfRunning(Application.Handle, 1) then
begin
If FV.GetFileVersion('acsimanufacturing.exe') then begin
If FV.Version < Stringlist.Strings[0] then begin
Showmessage('Incorrect program version! Please click "Next" when prompted to install newer version.');
WinExec('\\AUTCON2\SYS6\drivers\custom applications\acsimanufacturing\setup.exe', 1);
Sleep(350);
end else begin
FV.Free;
Stringlist.Free;
Application.Initialize;
Application.Title := 'ACSI Manufacturing';
Application.CreateForm(TDM, DM);
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TFormViewResults, FormViewResults);
Application.CreateForm(TBarcodeLabelsForm, BarcodeLabelsForm);
// Application.CreateForm(TFormEditVerifySubassemblyParts, FormEditVerifySubassemblyParts);
Application.CreateForm(TFormNewEmployee, FormNewEmployee);
Application.CreateForm(TFormSystemNumberSplit, FormSystemNumberSplit);
Application.CreateForm(TAttachedFileDesignationForm, AttachedFileDesignationForm);
Application.CreateForm(TSetPricedPartsForm, SetPricedPartsForm);
Application.CreateForm(TSendEmailForm, SendEmailForm);
Application.CreateForm(TCloneFOForm, CloneFOForm);
Application.CreateForm(TPrintForm, PrintForm);
//Application.CreateForm(TFormPrintLandscape, FormPrintLandscape);
LoadingForm.Hide;
LoadingForm.Free;
Application.Run;
end;
end;
end;
end.
put a break point on line 94 and check which line gives the exception please
ASKER
I apologize for the delay. I manage all of the IT at the company I work for (one man show), so I've been busy most of the day.
I will do this and after testing and getting the error, I'll post the error details (line number).
Thanks,
Brent
I will do this and after testing and getting the error, I'll post the error details (line number).
Thanks,
Brent
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
@sinisav:
I've used the code this way for years. It keeps my app from loading if the version of the program is older than the newer one. However, I'll try your suggestion and see if that helps. I find it strange that this would cause a problem only with Windows 7. The program runs fine on XP Pro.
I've used the code this way for years. It keeps my app from loading if the version of the program is older than the newer one. However, I'll try your suggestion and see if that helps. I find it strange that this would cause a problem only with Windows 7. The program runs fine on XP Pro.
ASKER
@sinisav:
You mean like this?
I guess that makes sense, because it needs to be able to free those objects no matter what, and the initialization of the program should technically be first.
I'll let you know how it goes. Thanks!
You mean like this?
program ACSIManufacturing;
uses
madExcept,
madLinkDisAsm,
madListHardware,
madListProcesses,
madListModules,
Forms,
rsFileVersion,
Dialogs,
Windows,
Classes,
MainUnit in 'MainUnit.pas' {MainForm},
DatamoduleUnit in 'DatamoduleUnit.pas' {DM: TDataModule},
LocateRecordUnit in 'LocateRecordUnit.pas' {LocateRecordForm},
FilterSort in 'FilterSort.pas' {FilterSortForm},
loading in 'loading.pas' {LoadingForm},
modelform in 'modelform.pas' {ModelsForm},
neworderunit in 'neworderunit.pas' {NewOrderForm},
Progress in 'Progress.pas' {ProgressBarForm},
aboutunit in 'aboutunit.pas' {AboutForm},
Messagepicklist in 'Messagepicklist.pas' {MessagePickListForm},
NewUserUnit in 'NewUserUnit.pas' {NewUserForm},
SingleEditBoxUnit in 'SingleEditBoxUnit.pas' {SingleEditBoxForm},
OrderCalendarUnit in 'OrderCalendarUnit.pas' {OrderCalendarForm},
newpackunit in 'newpackunit.pas' {NewPackForm},
ReleaseOrders in 'ReleaseOrders.pas' {FormReleaseOrders},
loginform in 'loginform.pas' {FormLogin},
ignoregenericunit in 'ignoregenericunit.pas' {FormIgnoreGenerics},
Printallcopiesunit in 'Printallcopiesunit.pas' {FormPrintAllCopies},
packitempick in 'packitempick.pas' {SelectOrderItems},
MarkOrderShippedUnit in 'MarkOrderShippedUnit.pas' {MarkOrderShippedForm},
createcontainerunit in 'createcontainerunit.pas' {ContainerForm},
MasterComments in 'MasterComments.pas' {FormComments},
CustomMaster in 'CustomMaster.pas' {FormCustomMaster},
RevisionUnit in 'RevisionUnit.pas' {FormRevision},
MarkBacklogUnit in 'MarkBacklogUnit.pas' {MarkBacklogForm},
ChangeARCodeUnit in 'ChangeARCodeUnit.pas' {ChangeARCodeForm},
HelpUnit in 'HelpUnit.pas' {FormHelp},
SingleComboBoxUnit in 'SingleComboBoxUnit.pas' {SingleComboBoxUnit1},
formprintorders in 'formprintorders.pas' {FormPrintOrder},
RecordsFoundForm in 'RecordsFoundForm.pas' {FormRecordsFound},
FormQuickReportMailingLabelUnit in 'FormQuickReportMailingLabelUnit.pas' {FormQuickReport},
ResultsUnit in 'ResultsUnit.pas' {FormResults},
PrintingMainUnit in 'PrintingMainUnit.pas' {PrintingMainForm},
supermodelform in 'supermodelform.pas' {FormSuperModel},
FormQuickReportPurpartsLabelSmallUnit in 'FormQuickReportPurpartsLabelSmallUnit.pas' {FormQuickReport2},
SystemNumberSplitCombineUnit in 'SystemNumberSplitCombineUnit.pas' {FormSystemNumberSplitCombine},
PricePartUnit in 'PricePartUnit.pas' {PricePartForm},
PrintLandscape in 'PrintLandscape.pas' {FormPrintLandscape},
OrderAllocationsUnit in 'OrderAllocationsUnit.pas' {OrderAllocationsForm},
ViewResultsUnit in 'ViewResultsUnit.pas' {FormViewResults},
CellTextEditor in 'CellTextEditor.pas' {CellTextEditForm},
BarcodeLabelsUnit in 'BarcodeLabelsUnit.pas' {BarcodeLabelsForm},
PrintEmployeeTimeClockLabels in 'PrintEmployeeTimeClockLabels.pas' {FormPrintEmployeeTimeClockLabels},
FormNewEmployeeUnit in 'FormNewEmployeeUnit.pas' {FormNewEmployee},
SystemNumberSplitUnit in 'SystemNumberSplitUnit.pas' {FormSystemNumberSplit},
CheckPreviousInstance in 'CheckPreviousInstance.pas',
AttachedFileDesignationUnit in 'AttachedFileDesignationUnit.pas' {AttachedFileDesignationForm},
SetPricedPartsUnit in 'SetPricedPartsUnit.pas' {SetPricedPartsForm},
SendEmailUnit in 'SendEmailUnit.pas' {SendEmailForm},
CloneFOUnit in 'CloneFOUnit.pas' {CloneFOForm},
printingunit in 'printingunit.pas' {PrintForm},
Vcl.Themes,
Vcl.Styles;
var
FV : TrsFileVersion;
Stringlist : TStringlist;
const
VersionFile = '\\AUTCON2\SYS6\DRIVERS\Custom Applications\ACSIManufacturing\version.txt';
{$R *.RES}
begin
//ReportMemoryLeaksOnShutdown := DebugHook <> 0;
Application.Initialize;
LoadingForm:= TLoadingForm.Create(Application);
LoadingForm.show;
LoadingForm.update;
FV := TrsFileVersion.Create;
Stringlist:= TStringlist.create;
Stringlist.LoadFromFile(VersionFile);
if not CheckPreviousInstance.RestoreIfRunning(Application.Handle, 1) then
begin
If FV.GetFileVersion('acsimanufacturing.exe') then begin
If FV.Version < Stringlist.Strings[0] then begin
Showmessage('Incorrect program version! Please click "Next" when prompted to install newer version.');
WinExec('\\AUTCON2\SYS6\drivers\custom applications\acsimanufacturing\setup.exe', 1);
Sleep(350);
end else begin
Application.Title := 'ACSI Manufacturing';
Application.CreateForm(TDM, DM);
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TFormViewResults, FormViewResults);
Application.CreateForm(TBarcodeLabelsForm, BarcodeLabelsForm);
// Application.CreateForm(TFormEditVerifySubassemblyParts, FormEditVerifySubassemblyParts);
Application.CreateForm(TFormNewEmployee, FormNewEmployee);
Application.CreateForm(TFormSystemNumberSplit, FormSystemNumberSplit);
Application.CreateForm(TAttachedFileDesignationForm, AttachedFileDesignationForm);
Application.CreateForm(TSetPricedPartsForm, SetPricedPartsForm);
Application.CreateForm(TSendEmailForm, SendEmailForm);
Application.CreateForm(TCloneFOForm, CloneFOForm);
Application.CreateForm(TPrintForm, PrintForm);
//Application.CreateForm(TFormPrintLandscape, FormPrintLandscape);
LoadingForm.Hide;
Application.Run;
end;
end;
end;
FV.Free;
Stringlist.Free;
LoadingForm.Free;
end.
I guess that makes sense, because it needs to be able to free those objects no matter what, and the initialization of the program should technically be first.
I'll let you know how it goes. Thanks!
ASKER
Ok, after performing the changes and re-compiling. I placed the updated application on the single user's computer. It's been working without any problems for most of the day. Then when she closed the program, it threw an exception. However, I'd already tested closing it without any problems.
Here is the bug report:
I've been programming in Delphi for years. However, since I have had no debugging issues like this, I'm kinda out of my league on this. So again, I must ask you to please review the bug report, and tell me what you can deduce is wrong.
I'm happy to provide code from the application, I just need to know which units are the culprits, that might need looking into first.
Here is the bug report:
date/time : 2013-09-05, 14:33:17, 857ms
computer name : ORDERENTRYPC1
user name : saustin
registered owner : saustin
operating system : Windows 7 x64 Service Pack 1 build 7601
system language : English
system up time : 52 minutes 19 seconds
program up time : 48 minutes 17 seconds
processors : 4x Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz
physical memory : 1887/3918 MB (free/total)
free disk space : (C:) 410.38 GB
display mode : 1920x1080, 32 bit
process id : $e48
allocated memory : 110.33 MB
executable : ACSIManufacturing.exe
exec. date/time : 2013-09-05 08:19
version : 2.0.0.3
compiled with : Delphi XE2
madExcept version : 4.0.7
callstack crc : $b2d0aa8a, $577e0999, $577e0999
exception number : 1
exception class : EAccessViolation
exception message : Access violation at address 004038FD in module 'ACSIManufacturing.exe'. Write of address 00000000.
main thread ($8d8):
004038fd +081 ACSIManufacturing.exe System 29 +0 SysFreeMem
00404b0c +004 ACSIManufacturing.exe System 29 +0 @FreeMem
00408680 +01c ACSIManufacturing.exe System 29 +0 @LStrClr
004087ed +025 ACSIManufacturing.exe System 29 +0 @UStrFromPWCharLen
005d8a98 +078 ACSIManufacturing.exe Vcl.Menus TMenu.UpdateImage
005d8b3f +00b ACSIManufacturing.exe Vcl.Menus TMenu.SetWindowHandle
005ea0a5 +17d ACSIManufacturing.exe Vcl.Forms TCustomForm.WMDestroy
0052171d +2bd ACSIManufacturing.exe Vcl.Controls TControl.WndProc
0052607b +5b3 ACSIManufacturing.exe Vcl.Controls TWinControl.WndProc
005e6f11 +60d ACSIManufacturing.exe Vcl.Forms TCustomForm.WndProc
005256d0 +02c ACSIManufacturing.exe Vcl.Controls TWinControl.MainWndProc
0048f834 +014 ACSIManufacturing.exe System.Classes StdWndProc
76fa0107 +02b ntdll.dll KiUserCallbackDispatcher
005e5b9b +073 ACSIManufacturing.exe Vcl.Forms TCustomForm.Destroy
0048dae7 +057 ACSIManufacturing.exe System.Classes TComponent.DestroyComponents
005e3a9d +035 ACSIManufacturing.exe Vcl.Forms DoneApplication
00450186 +026 ACSIManufacturing.exe System.SysUtils DoExitProc
00408399 +065 ACSIManufacturing.exe System 29 +0 @Halt0
00ee2113 +283 ACSIManufacturing.exe ACSIManufacturing 115 +39 initialization
755c33a8 +010 kernel32.dll BaseThreadInitThunk
thread $e40:
76fb0156 +0e ntdll.dll NtWaitForMultipleObjects
755c33a8 +10 kernel32.dll BaseThreadInitThunk
thread $1414:
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
6fc12713 +24f netbios.dll Netbios
thread $148c (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $1490 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $1494 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $1498 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $149c (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14a0 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14a4 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14a8 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14ac (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14b0 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14b4 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14b8 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14bc (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14c0 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14c4 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14c8 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14cc (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14d0 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $14d4 (TDataConnectThread):
76fb0156 +00e ntdll.dll NtWaitForMultipleObjects
74f515e3 +0fa KERNELBASE.dll WaitForMultipleObjectsEx
755c1a27 +089 kernel32.dll WaitForMultipleObjectsEx
755c421b +013 kernel32.dll WaitForMultipleObjects
008ffad0 +168 ACSIManufacturing.exe RpCon TDataConnectThread.Execute
004cf6a7 +02b ACSIManufacturing.exe madExcept HookedTThreadExecute
0048c7aa +042 ACSIManufacturing.exe System.Classes ThreadProc
004084ec +028 ACSIManufacturing.exe System 29 +0 ThreadWrapper
004cf589 +00d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +037 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +010 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
009005a9 +029 ACSIManufacturing.exe RpCon TRvCustomConnection.SetRTVisible
thread $1520: <priority:-15>
76faf8ca +0e ntdll.dll NtWaitForSingleObject
74f51497 +92 KERNELBASE.dll WaitForSingleObjectEx
755c118f +3e kernel32.dll WaitForSingleObjectEx
755c1143 +0d kernel32.dll WaitForSingleObject
727f29b8 +38 MSVCR80.dll _endthreadex
004cf589 +0d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +37 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +10 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
727f2ac7 +7f MSVCR80.dll _beginthreadex
thread $52c:
76faf8ca +0e ntdll.dll NtWaitForSingleObject
74f51497 +92 KERNELBASE.dll WaitForSingleObjectEx
755c118f +3e kernel32.dll WaitForSingleObjectEx
755c1143 +0d kernel32.dll WaitForSingleObject
004cf589 +0d ACSIManufacturing.exe madExcept CallThreadProcSafe
004cf5f3 +37 ACSIManufacturing.exe madExcept ThreadExceptFrame
755c33a8 +10 kernel32.dll BaseThreadInitThunk
>> created by main thread ($8d8) at:
74854c95 +00 winspool.drv
thread $44c:
76fb1f3f +0b ntdll.dll NtWaitForWorkViaWorkerFactory
755c33a8 +10 kernel32.dll BaseThreadInitThunk
thread $1b10:
76fb1f3f +0b ntdll.dll NtWaitForWorkViaWorkerFactory
755c33a8 +10 kernel32.dll BaseThreadInitThunk
thread $1b0c:
76fb1f3f +0b ntdll.dll NtWaitForWorkViaWorkerFactory
755c33a8 +10 kernel32.dll BaseThreadInitThunk
I've been programming in Delphi for years. However, since I have had no debugging issues like this, I'm kinda out of my league on this. So again, I must ask you to please review the bug report, and tell me what you can deduce is wrong.
I'm happy to provide code from the application, I just need to know which units are the culprits, that might need looking into first.
please move line Application.CreateForm(TMa inForm, MainForm) before Application.CreateForm(TDM , DM) and change LoadingForm:= TLoadingForm.Create(Applic ation) to LoadingForm:= TLoadingForm.Create(nil). This is because delphi set first form created with Application as owner to main form of application. When this main form is closed - app is closed and I think that MainForm is real main form in your case.
...as result of these changes there is one thing - in create event of main form (MainForm) you must not use something from data module (DM) but rather in OnShow event.
begin
//ReportMemoryLeaksOnShutdown := DebugHook <> 0;
Application.Initialize;
LoadingForm:= TLoadingForm.Create(nil); //changed
LoadingForm.show;
LoadingForm.update;
FV := TrsFileVersion.Create;
Stringlist:= TStringlist.create;
Stringlist.LoadFromFile(VersionFile);
if not CheckPreviousInstance.RestoreIfRunning(Application.Handle, 1) then
begin
If FV.GetFileVersion('acsimanufacturing.exe') then begin
If FV.Version < Stringlist.Strings[0] then begin
Showmessage('Incorrect program version! Please click "Next" when prompted to install newer version.');
WinExec('\\AUTCON2\SYS6\drivers\custom applications\acsimanufacturing\setup.exe', 1);
Sleep(350);
end else begin
Application.Title := 'ACSI Manufacturing';
Application.CreateForm(TMainForm, MainForm); //moved
Application.CreateForm(TDM, DM);
Application.CreateForm(TFormViewResults, FormViewResults);
Application.CreateForm(TBarcodeLabelsForm, BarcodeLabelsForm);
// Application.CreateForm(TFormEditVerifySubassemblyParts, FormEditVerifySubassemblyParts);
Application.CreateForm(TFormNewEmployee, FormNewEmployee);
Application.CreateForm(TFormSystemNumberSplit, FormSystemNumberSplit);
Application.CreateForm(TAttachedFileDesignationForm, AttachedFileDesignationForm);
Application.CreateForm(TSetPricedPartsForm, SetPricedPartsForm);
Application.CreateForm(TSendEmailForm, SendEmailForm);
Application.CreateForm(TCloneFOForm, CloneFOForm);
Application.CreateForm(TPrintForm, PrintForm);
//Application.CreateForm(TFormPrintLandscape, FormPrintLandscape);
LoadingForm.Hide;
Application.Run;
end;
end;
end;
FV.Free;
Stringlist.Free;
LoadingForm.Free;
end.
...as result of these changes there is one thing - in create event of main form (MainForm) you must not use something from data module (DM) but rather in OnShow event.
ASKER
@sinisav:
I did what you said, and yes I did have to modify my onCreate event for the MainForm a little, and put that code from that event into my onShow. Everything seem to be running ok. If it works without fail, I'll be awarding you. Thanks so much!
I have to leave the office for personal reasons today, so I won't respond until Monday. Have a great weekend!
I did what you said, and yes I did have to modify my onCreate event for the MainForm a little, and put that code from that event into my onShow. Everything seem to be running ok. If it works without fail, I'll be awarding you. Thanks so much!
I have to leave the office for personal reasons today, so I won't respond until Monday. Have a great weekend!
on a side note
Datamodules do not get set as a main form, even when loaded first
if you want to compare the version ... 2 strings, then why not offload to a string
it's all a matter of scope
The stringlist is only needed to get the version from a file
The FV is only needed to get the exe file version
Limiting an object to the scope it's used for always helps in avoiding memory leaks
string variables in the .dpr source are not considered as objects
Datamodules do not get set as a main form, even when loaded first
if you want to compare the version ... 2 strings, then why not offload to a string
var
FV : TrsFileVersion;
Stringlist : TStringlist;
Ver1, Ver2: string;
begin
//ReportMemoryLeaksOnShutdown := DebugHook <> 0;
Ver1 := '1.0.0.0';
Ver2 := 'missing';
Application.Initialize;
LoadingForm:= TLoadingForm.Create(nil); //changed
try
LoadingForm.show;
LoadingForm.update;
if not CheckPreviousInstance.RestoreIfRunning(Application.Handle, 1) then
begin
Stringlist := TStringlist.create;
try
Stringlist.LoadFromFile(VersionFile);
Ver1 := StringList[0];
finally
StringList.Free;
end;
FV := TrsFileVersion.Create;
try
If FV.GetFileVersion('acsimanufacturing.exe') then
Ver2 := FV.Version;
finally
FV.Free;
end;
If Ver2 < Ver1 then
begin
Showmessage('Incorrect program version! Please click "Next" when prompted to install newer version.');
WinExec('\\AUTCON2\SYS6\drivers\custom applications\acsimanufacturing\setup.exe', 1);
Sleep(350);
end
else
begin
Application.Title := 'ACSI Manufacturing';
Application.CreateForm(TMainForm, MainForm); //moved
Application.CreateForm(TDM, DM);
Application.CreateForm(TFormViewResults, FormViewResults);
Application.CreateForm(TBarcodeLabelsForm, BarcodeLabelsForm);
// Application.CreateForm(TFormEditVerifySubassemblyParts, FormEditVerifySubassemblyParts);
Application.CreateForm(TFormNewEmployee, FormNewEmployee);
Application.CreateForm(TFormSystemNumberSplit, FormSystemNumberSplit);
Application.CreateForm(TAttachedFileDesignationForm, AttachedFileDesignationForm);
Application.CreateForm(TSetPricedPartsForm, SetPricedPartsForm);
Application.CreateForm(TSendEmailForm, SendEmailForm);
Application.CreateForm(TCloneFOForm, CloneFOForm);
Application.CreateForm(TPrintForm, PrintForm);
//Application.CreateForm(TFormPrintLandscape, FormPrintLandscape);
LoadingForm.Hide;
Application.Run;
end;
end;
finally
LoadingForm.Free;
end;
end.
it's all a matter of scope
The stringlist is only needed to get the version from a file
The FV is only needed to get the exe file version
Limiting an object to the scope it's used for always helps in avoiding memory leaks
string variables in the .dpr source are not considered as objects
ASKER
The program has become even more unstable. I will go ahead and award points now, because I was given direction, that hopefully will lead me to debug the program completely. But due to time constraints with other projects, I just haven't had the time to work through all the issues thus far.
Thanks to everyone for their help!
Brent
Thanks to everyone for their help!
Brent
ASKER
Since the experts here have helped me to understand how to troubleshoot using MadExcept, I am awarding points, and closing this posting, even though my problem(s) persist. I don't know if Delphi XE2, is unstable, or if it's the PDAC, RAVE, or what, but I may have to do a bit more testing before I can determine what is causing all of the problems.
Thanks to all who chimed in, and tried to help!
Thanks to all who chimed in, and tried to help!
ASKER
Open in new window
Any idea about this one???