access violation(200分)

  • 主题发起人 主题发起人 Teikini
  • 开始时间 开始时间
T

Teikini

Unregistered / Unconfirmed
GUEST, unregistred user!
Sorry, I can not write Chinese.But I can read.

There is error when I run my PG from menu or from play button.
The erroe is "access violation at 0xbff77e30:read of addreee of 0xffffffff 66 8B 01 8B 4C 24 24 E3 02 8A 01 8B".

But there is no error when I run it from compiled file(for example: play.exe).

And there is no error when I run it in other PC from menu or from play button.

My PC:
Windows98 Delphi 4 c/s PIII450 M:128M
Oracle8


Please help me!!!
 
可以单步跟踪一下,确定在那一条语句出错。
 
你使用了未建立的對象。
最好把那段程序貼出來看看。
 
liuzhw: 没有特定的哪条出错(不定), 不过总是在操作DB时出错.
BUT 执行EXE文件时却正常.
在别的机子上也正常.


LIWEI:
with dmlZaiko do
begin
qryM02.SQL.Clear;
qryM02.SQL.Add('SELECT M02_SHOP_NM,TO_CHAR(SYSDATE,''YYYY/MM/DD'') SYS_DATE');
qryM02.SQL.Add('FROM M02_SHOP');
qryM02.Open;
edt_TTSHOP_NM.Text := qryM02.FieldByName('M02_SHOP_NM').Asstring;
edt_TTDATE.Text := copy(qryM02.FieldByName('SYS_DATE').Asstring,1,4) + 'year' +
copy(qryM02.FieldByName('SYS_DATE').Asstring,6,2) + 'month' +
copy(qryM02.FieldByName('SYS_DATE').Asstring,9,2) + 'day';
sShop_Name := edt_TTSHOP_NM.Text;
sSystem_Date := edt_TTDATE.Text;
qryM02.Close;
end;



with dmlZaiko do
begin
qryZaikoHyouji.SQL.Clear;
qryZaikoHyouji.SQL.Add('SELECT ');
qryZaikoHyouji.SQL.Add('TO_CHAR(Z02_REG_DT,''YYYY/MM/DD'') Z02_REG_DATE,');
qryZaikoHyouji.SQL.ADD('Z02_SHOHIN_CD,');
qryZaikoHyouji.SQL.Add('M40_SHOHIN_NM,M40_STANDARD,');
qryZaikoHyouji.SQL.Add('Z02_SURYO,Z02_SEQ');
qryZaikoHyouji.SQL.Add('FROM Z02_STOCK_REG,M40_SHOHIN,M02_SHOP');
qryZaikoHyouji.SQL.Add('WHERE Z02_SHOP_CD=M02_SHOP_CD(+)');
qryZaikoHyouji.SQL.Add('AND  Z02_SHOHIN_CD=M40_SHOHIN_CD');
qryZaikoHyouji.SQL.Add('AND  TO_CHAR(Z02_REG_DT,''MM'')=TO_CHAR(SYSDATE,''MM'')');
qryZaikoHyouji.SQL.Add('AND  TO_CHAR(Z02_REG_DT,''YYYY'')=TO_CHAR(SYSDATE,''YYYY'')');
qryZaikoHyouji.SQL.Add('AND  Z02_DATA_TP='+''''+sZaikoOption+'''');
qryZaikoHyouji.SQL.Add('ORDER BY 1 DESC,6');
qryZaikoHyouji.Open;
end;



 
既然在别在机器上好使,一定是你的机器上的问题了.由于exe好用,所以数据库有问题
的可能性较小.应是你的ide的问题.
建议.
1.用step over运行,看看是否能找出出错行.
2.是否用了update2 update3?
3.用了什么第三方控件.
 
也许你引用了某个还未创建的对象,如:

var
aForm :form;

begin
from.title := 'my title';
end

就会出现这种错误,仔细找一下,另外注意一下各form创建的顺序
 
menxin: 你好
我想IDE有问题的可能性很高, 但不知出错在哪儿? 如何查?

通常出错的语句在SQL的OPEN上, 但语句绝对没错.

另外 我用了UPDATE2和UPDATE3.
但没有第三方的控件. 谢了.


lynx: 你好
我没有引用某个还未创建的对象, 如有的话, .EXE能正常吗?
"各form创建的顺序"的意思我不明白.
敬请指教.









 
从你的语句可以猜出你的数据控件放在DataModule上了。
如果你没有改过窗体创建顺序的话,应该先创建主窗体,再创建DataModule.

而你在主窗体的Create事件中调用了访问数据库的语句。

因此。。。。

解决方法,打开project/option下的Forms,在Auto_create Forms下

将dmlZaiko拖到最前面。
 
怪了.我想你一定试过重装delphi了.
 
DSP:
照你说的作了(将dmlZaiko拖到最前面),没用.

MENXIN:
重装DELPHI照旧.


我在另一台P3 450 上RUN,也如此.
但在 CELERON 300 上正常, 真是气煞我也.
难道是P3的BUG? 不会吧? 真是搞不懂.


 
我就碰到过类似问题。问题在于有时Delphi 4不稳定。
曾有那别人程序在我机器上,把整个System Crash 掉的例子!
重装系统应该没问题!
 
To shangrila:

你指的重装系统仅是DELPHI呢, 还是包括其他?
 
是不是引用了某个DataModule在其创建之前造成的?

猜想 :-)
 
我觉得应该不会是对象创建顺序之类的问题。
如果在有些机器上从不出错,在另一些机子上有时出错,很奇怪。
看看到底有什么不同?
我觉得应该考虑database engine相关的部分。
既然是数据库操作,会不会在一些例外处理的时候有问题?
比如说,有些机子的连接性能比较好,不怎么出现问题,有些代
码就比较难执行到。
再如果还找不到问题,检查检查指针问题。如果工作量不是很大的话,
尽量不要用指针。

没有oracle8,没法作试验了。
 
可能使用了有问题的第三方控件, 你的机器是否在运行其它简单的程序时就没有
问题?
 
to Teikini:
Last time I reinstall windows 98. Then the system run normal.
有时,Delphi一旦出问题,光重新装Delphi好像不行. 至少也得把文件,注册表,
连接库上干净再重装. 你有功夫的话可以试一试.
 
各位
  谢谢了

好象没有十分对症的答案........
 
我也碰到这样的问题,编译没有问题,但运行就出意外错误。
如果你所提供的这段程序是在自定义的一段的MyProcedure1中,那么
做如下声明:
type TMyForm=class(TForm)
.
.
private
procedure YourProcedure1;
public
procedure YourProcedure2;
end;
然后在implementation部分
procedure TMyForm.YourProcedure1;
begin
.
.
.
end;

procedure TMyForm.YourProcedure2;
begin
.
.
.
end;
 
从以下几点考虑:
1. 比较两台机器的BDE的Oracle设置和Oracle CLient的设置有何不同.
 
我以前也碰过类似的问题,debug时没有任何问题,但
运行时出错,不知为什么?问题肯定出在使用DB上。
 

Similar threads

后退
顶部