How to avoid AV error when developing database Application
--Bear
When developing delphi database application, sometimes you will meet AV error, for example:
1. Access Violation at address XXXXX in module *.exe, read of address XXXXX etc
2. Access violation at address XXXXX in Ole32.dll
3. Runtime error 216
And you are sure this AV error is not caused by your own code because there is no debug breakpoint.
OK, you can do as follows to avod the AV error,
1. Open the project source code : YourProject.dpr
2. Find the problem data module by comment. The problom datamodule is that data module when you comment it there will be no AV error
3. Check the datasets on the data module, do you change the database field define after you create the datamodule? For example, in the data module , there is a field : StudentCode:TStringField, but in your database, you change it as Integer, or changed its name.
Make sure all of the database can be set as Active at design time. Sometimes you need recreate the dataset on the client side and server side at the same time.
4. If you are sure there is no problem with the datasets, please change the position of the problem data module, for example change
Application.CreateForm(TSys_DM, Sys_DM);
Application.CreateForm(TCodeTable_DM, CodeTable_DM);
Application.CreateForm(TMain_Frm, Main_Frm);
to
Application.CreateForm(TMain_Frm, Main_Frm);
Application.CreateForm(TSys_DM, Sys_DM);
Application.CreateForm(TCodeTable_DM, CodeTable_DM);
or only create datamodule at runtime and free it manually.
5. You can change the data module create style as follows :
Main_DM := TMain_DM.Create(Main_Frm); // to avoid AV error
6. Make sure you have disconnected all of the ConnectionBocker, DCOMConnection,SocketConnection,WebConnection,SoapConnection at design time!
Nomally you will avoid the AV error by above steps.
You can also find code line by the address of the AV by enabling the debug DCU.
Good Luck !