"Assess Violation at Address 772A1940",这是什么错误?

bobcnb 2003-04-01 02:52:16
Delphi6.0+BDE,数据库sql。试登录窗口的取消按钮和窗口关闭按钮,都会引起这个错误,请指教。
...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobcnb 2003-04-02
  • 打赏
  • 举报
回复
解决了,结贴。
bobcnb 2003-04-01
  • 打赏
  • 举报
回复
初步结果:
begin
Application.Initialize;
Application.CreateForm(Tmain, main);
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(Tlogin, login);
//Application.CreateForm(Twzjk, wzjk);
if login.ShowModal=mrok then Application.Run;//这里
end.
这样就pass了,Twzjk里用了2个第三方控件:Ehlib2.3和dxmemdata,难道和这2个控件有关?
如果是的话而且不想放弃使用此2个控件(偶觉得很好用),是否只有用Halt呢?
liumengchuan 2003-04-01
  • 打赏
  • 举报
回复
有可能
你在main.oncreate、datamodule.oncreate里都创建了哪些对象?
这些对象的释放都在哪里?
我劝你最好单步跟踪一下,看看到底是在哪出的错误

if login.ShowModal=mrok then Application.Run;
在这里设断点,然后单步跟踪

bobcnb 2003-04-01
  • 打赏
  • 举报
回复
main里的ondestroy断点没起作用,是否和其他form有关?
liumengchuan 2003-04-01
  • 打赏
  • 举报
回复
你的mainform的ondestroy中写了代码或datamodule的ondestroy中写了代码
你在那里设个断点试试
skyclin 2003-04-01
  • 打赏
  • 举报
回复
一般来说,这种错误是程序调用或使用了不存在资源!
慢慢来,用断点调试!
bobcnb 2003-04-01
  • 打赏
  • 举报
回复
就在这里调用:

program hx;

uses
Forms,
controls,
sysutils,
u_main in 'u_main.pas' {main},
u_data in 'u_data.pas' {DataModule1: TDataModule},
u_login in 'u_login.pas' {login},
u_wzjk in 'u_wzjk.pas' {wzjk};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(Tmain, main);
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(Tlogin, login);
Application.CreateForm(Twzjk, wzjk);
if login.ShowModal=mrok then Application.Run;//这里
end.
liumengchuan 2003-04-01
  • 打赏
  • 举报
回复
不关这段代码的事,而在你modalresult<>mrok后,你的处理返回结果的窗口做了不该做的事
比如数据库还没打开就操作某些资源
你要是把loginform的cancel按钮事件这样写,就不会发生问题了
oncancelclick()
begin
halt;
end;
(说明:这样写是不合适的,应当想别的办法避免。我这么写只是为了指出你程序错在了什么地方)
bobcnb 2003-04-01
  • 打赏
  • 举报
回复
代码如下:
。。。。。
var m_cz:string;

type
Tlogin = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Query1: TQuery;
procedure BitBtn1Click(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);

private
{ Private declarations }
public

end;

var
login: Tlogin;

implementation

{$R *.dfm}

procedure Tlogin.BitBtn1Click(Sender: TObject);
begin
with query1 do
begin
ParamByName('dm').AsString:=lowercase(edit1.text);
ParamByName('passwd').AsString:=edit2.text;
open;
if eof then
if login.tag<2 then
begin
login.Tag:=login.tag+1;
application.MessageBox('用户或口令错误,请重输!','注意',mb_ok);
edit1.SetFocus;
end
else
begin
application.MessageBox('抱歉,您不能使用本系统!','注意',mb_ok);
modalresult:=mrcancel;
end
else
begin
m_cz:=trim(lowercase(edit1.text));
modalresult:=mrok;
end;
close;
end;
end;
。。。
怎么解决?
xiaozhanger 2003-04-01
  • 打赏
  • 举报
回复
估计没人知道,只有写代码的人知道
WWWWA 2003-04-01
  • 打赏
  • 举报
回复
程序有误,有时编译可通过,运行时就会报错。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧