Win98下的困惑?(50分)

  • 主题发起人 主题发起人 yue412
  • 开始时间 开始时间
Y

yue412

Unregistered / Unconfirmed
GUEST, unregistred user!
不知道大家在Win98下与到过这种问题没有?
在98环境下,运行如下代码:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {DataModule2: TDataModule},
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TDataModule2, DataModule2);
Exit;//退出
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
其中,在数据模块DataModule2中,用一个ADOConnection使用Jet 3.5.1(或Jet 4.0)方式连接了
一个Access97数据库。
执行这段代码后,会出现非法操作等异常。如果一次不出来,多执行几次就会出现异常。
不知何故?望高手赐教。
 
你的代码
Exit;//退出
是什么用意?
 
Exit是终止当前程序,不知用在此处有何用意, 去掉它试一下。
 
运行时exit 没有吧?
关键在TDataModule2中的代码?
 
同上,肯定是数据模块中有问题
 
应该是对你的exit困惑才对!
 
>>应该是对你的exit困惑才对!
是呀,EXIT加在这没道理吧?!
 
就是没有道理嘛! Exit
 
既然没有使用Form1干吗定义,如果是为了测试可以理解。
Win98的内存管理比较差,你连接了Access但是你有没有释放?
如果在DataModule2调用 Form1的未创建的对象也肯定出错!Form1根本就没有创建。
 
Eixt在这里的含义相当于有一个LoginForm,当登录失败时退出,如下代码所示:
Application.Initialize;
Application.CreateForm(TDataModule2, DataModule2);
LoginFrm := TLoginFrm.Create(Application)
try
blnLoginResult := LoginFrm.ShowModal = mrYes;
finally
Free;
end;
if not blnLoginResult then Exit;//退出
Application.CreateForm(TForm1, Form1);
Application.Run;
因为在LoginForm中需要从数据库中读取用户列表,故在TDataModual中连接了数据库。
代码如下:
procedure TDataModaule2.DataModuleCreate(Sender: TObject);
procedure ConnectSysDB;
begin
with adocSystem do
begin
ConnectionString := 'Provider=Microsoft.Jet.OLEDB.3.51;' +
'Persist Security Info=False;Data Source=' + GDataPath + conSysDBName +
';Jet OLEDB:Database Password=' + conDBPassword;
Connected := True;
end;
end;
begin
ConnectSysDB;//Connect System DataBase
end;
 
LoginFrm := TLoginFrm.Create(Application)
try
blnLoginResult := LoginFrm.ShowModal = mrYes;
finally
Free;
end;
if not blnLoginResult then Exit;//退出

把它去掉出错吗?
 
to ligia:
去掉不出错
 
>> if not blnLoginResult then Exit;//退出

if not blnLoginResult then Application.Terminate;
试试这个
 
to wumeng:
用Application.Terminate也会出错。
 
if not blnLoginResult then
begin
DataModule2.free;
Application.Terminate;
end;
 
多人接受答案了。
 
后退
顶部