为什么,我引用Query的内容时提示该内存不能为"written"?不知如何解决!求救。在win2000下。不会吧,难道没一个会?我已经提前了这么多次了 ? (

  • 主题发起人 主题发起人 DT
  • 开始时间 开始时间
D

DT

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么,我引用Query的内容时提示该内存不能为"written"?不知如何解决!求救。在win2000下。不会吧,难道没一个会?我已经提前了这么多次了 ? (80分)<br />pbmain为在其他单元定义的一个对象。allbody为一Tquery对象。
在本单元内对其值进行赋值时会出现提示:
Project pb.exe raised exception class EAccessViolation with
message 'Access violation at address 004A8826 in module 'pb.exe'.
Write of address 00000008'. Process stopped Use Step or Run to continue.
(Delphi提示)
程序如下:
procedure TFrmMain.allbodyAfterOpen(DataSet: TDataSet);
var
vi:integer;
begin
//出错处,但若用showmessage(inttostr(allbody.RecordCount));则不会提示出错。
//这是什么原因呀。我试了许多种方法了,这是最后一种了,把所有代码都放到
//allbody的Afteropen里都不行了。怎么办呀,所有的东西都停在这里了。
pbmain.pbcnt:=allbody.RecordCount ;
....
end;
所用的平台为windows2000专业版。是否与这有关系?求救.
 
用局部变量取它的值 都可以,为什么,pbmain不行?
 
用了局部变量取了allbody.recordcount的值后,
再将此局部变量赋给pbmain.pbcnt也出现同样错误,天啦,救救命呀。
 
你的pbmain的pbcnt的属性是如何定义的? read 了什么?write了什么?
 
你还不如定义一个全局变量了。
 
pbcnt:integer;
 
我在本单元定义了一个tv1:integer的全局变量。
结果,用tv1取allbody的recordcount的值可以取得到。
但将tv1的值赋与pbcnt就不行了。
 
其它单元窗口是否打开

其它单元.pbmain.pbcnt:=allbody.RecordCount
 
其他单元窗口有无打开是何意思??我同时打开了两个窗口.但这样的赋值语句只有一句
 
我把另外一个窗口关了后,出现以下提示,不知又是何意,
错误光标停在 Application.Run 处。
错误提示:
Project pb.exe raised exception class EDBEngineError with message
'Insufficient memory for this operation. Alias'.
Process stopped.
另外问一问,为什么上面的错误会在关了一个窗口后消失呢?我的另一窗口里有引用
pbmain所在的单元。
 
pbmain有没有先实例化?
 
if Assigned(定义pbmain的单元窗体) then
定义pbmain的单元.pbmain.pbcnt:=allbody.RecordCount ;
 
pbmain在这个过程之前已经引用了好多次了。
 
我试过了,,,肯定是你的对象没有事先create
 
绝对有了啦,真的,我也不明白,自从加了这一段程序后,
想把一个表里的数据读到内存的一个对象里,就出现了这种错了。
本来是想把数据的读入放在对象里用一个过程把当前的Query传过去来更新数据。
结果不行,放到这边也不行。
我都搞不下去了。卡在这里了。
 
我跟踪了一下,
好象是,我在from的oncreate里初始化各变量和对象,
可是,query的afteropen事件先执行了。
不懂呀,各个对象和事件的执行顺序是怎样的。可否请教各位一下。
 
不好意思分太少了。
 
把你窗体create的代码贴上来..
 
procedure TFrmMain.FormCreate(Sender: TObject);
begin
varinit; //初始化各变量
end;

Procedure VarInit;
begin
seteditrun:=False;
Vdbmodified:=true;
Vp1Modified:=true;
Vp2Modified:=false;
Vp3Modified:=false;
pbmain:=TCPbBody.Init;
bodyinit:=true;
labover:=false;
end;
 
//好象是,我在from的oncreate里初始化各变量和对象,
//可是,query的afteropen事件先执行了
TCPbBody.Init
执行了什么?

 
后退
顶部