一个困惑我大半夜的一个错误!还没有解决。对单机版数据库应用程序开发有经验的高手,快帮我看看(30分)

  • 主题发起人 主题发起人 hurryman
  • 开始时间 开始时间
H

hurryman

Unregistered / Unconfirmed
GUEST, unregistred user!
错误提示:
//////////////////////////////////
project pjmain.exe raised exception class eaccessviolation
with message 'access violation at address 004e1c8d in module'
'pjmain.exe',read of address 0000009c':process stopped ,use step or
run to continue.
//////////////////////////////////
我的代码如下:
提示错误后,停在*号位置。
procedure TpdForm.FormShow(Sender: TObject);
var pzstr:tstrings;
i:integer;
rksl:integer;
cksl:integer;
tksl:integer;
jssl:integer;
qcsl:integer;
begin
pzstr:=tstringlist.Create ;
pzstr.Clear ;
* if not (utdatamoule.DataModule2.hwglpzADODataSet.Active ) then
utdatamoule.DataModule2.hwglpzADODataSet.Active :=true;
utdatamoule.DataModule2.hwglpzADODataSet.Close ;
utdatamoule.DataModule2.hwglpzADODataSet.CommandText :='select distinct pz from cjpz';
utdatamoule.DataModule2.hwglpzADODataSet.Open ;
。。。。。。。。。。
 
大家帮我看看
 
ADODataSet如果没有设置好,就active不了,例如connectionstrion是否设置好,例如command text是否设置好。
等等了
 
>>if not (utdatamoule.DataModule2.hwglpzADODataSet.Active ) then
utdatamoule.DataModule2是否创建?
如果是自动Create的,需要在Form1调用以前生成,否则需要自己生成。
 
上面所说极是,看看是不是可以解决!
 
同意 yzhshi,一定是运行formshow的时候,utdatamoule还没创建。
 
同志! 请检查你的程序中 对象的 创建次序 FORMSHOW 之前

utdatamoule.DataModule2

是否已经创建?

不用 去 指明 utdatamoule 这个 unit

 
糟高,我的每个FORM弹出时候都出现这个别错误提示:
错误提示:
//////////////////////////////////
project pjmain.exe raised exception class eaccessviolation
with message 'access violation at address 004e1c8d in module'
'pjmain.exe',read of address 0000009c':process stopped ,use step or
run to continue.

////
我该如何去处理呀,客户都受不了了?
 
前面朋友所说的原因(object是否有被创建)你有检测没有?结果如何?

这种现象基本上是你的程序调用了一个尚未分配内存的object导致的。
至于你说每一个form都有这种现象,估计是操作系统的内存管理被破坏了。
 
把你源代码中所有的*.pas,*.frm和主form的留下,别的都删除(包括*.dpr*.cfg),重新build
 
在你的工程文件里,把创建窗体的顺序如下改动:

Application.Initialize;
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
........
 
在编写比较长的代码过程中,经常会由于某些该动而造成程序无法运行。
一般在调用对象之前都要检测一下被调用的对象是否有效!
 
我有时开的程序多了以后,就提示什么“address”错误,如果再开一次机就好了,不知道你是不是
这个情况?
 
后退
顶部