难道是内存不足?
//Delphi5.0 + Sql Server 7.0
//同样的代码如果单独运行则也正常,但如果放在大的程序中则出现如下问题
Var
Session:Array of TSession;
DataBase:Array of TDataBase;
Query:Array of TQuery;
begin
//如果只创建以下的任意两个对象,并进行相应处理,系统正常。
//如果三个对象都创建,则当退出主程序知,系统提示内存地址异常
SetLength(Session,TotalComNum);
SetLength(DataBase,TotalComNum);
SetLength(Query,TotalComNum);
//分别对Session,DataBase,Query进行初始化
for I := 1 to TotalComNum do
begin
//动态创建数据对象
Session[I - 1] := TSession.Create(Application);
Session[I - 1].Name := 'Session' + IntToStr(I);
Session[I - 1].SessionName := 'Ses1' + IntToStr(I);
Session[I - 1].Active := True;
DataBase[I - 1] := TDataBase.Create(Application);
DataBase[I - 1].Name := 'DataBase' + IntToStr(I);
DataBase[I - 1].AliasName := 'gsmphone';
DataBase[I - 1].DatabaseName := 'DB' + IntToStr(I);
DataBase[I - 1].LoginPrompt := False;
DataBase[I - 1].Params.Add('USER NAME=sa');
DataBase[I - 1].SessionName := Session[I - 1].SessionName;
DataBase[I - 1].Connected := True;
Query[I - 1] := TQuery.Create(Application);
Query[I - 1].Name := 'Query' + IntToStr(I);
Query[I - 1].SessionName := Session[I - 1].SessionName;
Query[I - 1].DatabaseName := DataBase[I - 1].DatabaseName;
end;
//其他操作
//.......
//释放对象
Session[I - 1].Destroy;
DataBase[I - 1].Destroy;
Query[I - 1].Destroy;
end;