O
otqsoft
Unregistered / Unconfirmed
GUEST, unregistred user!
我在作一个管理系统,其中查询的要生成一个Dll文件,可是调用时总会出错[出现的好像是地址错误],而EXE里执行是没有问题的,请各位大侠帮我看看吧。。。不盛感激,在此先谢过了。。。。
接口函数如下:
function DllFindInterFace(var tmpADO: TADOConnection; tmpNo,tmpName,tmpTable,tmpCaption: pchar): TForm;
begin
ADOCONN:= tmpADO;
FindUserID:= string(tmpNo);
FindUserName:= string(tmpName);
TableName:= string(tmpTable);
TitCaption:= string(tmpCaption);
try
if not Assigned(frmFindMain) then
begin
Application.CreateForm(TfrmFindMain, frmFindMain);
Application.ProcessMessages;
end;
frmFindMain.Caption:= frmFindMain.Caption + ' -- ' + string(tmpCaption);
LoadInterFace(frmFindMain);
frmFindMain.GetFindInfo(TitCaption);
frmFindMain.Show;
Result:= frmFindMain;
except
on E: Exception do
begin
WriteLog('UfindInterFace -> DllFindInterFace -> 查询窗体初始化加载失败!'+ e.Message);
if Assigned(frmFindMain) then
begin
frmFindMain.Close;
frmFindMain:= nil;
end;
end;
end;
end;
窗体frmFindMain的Create事件如下:
procedure TfrmFindMain.FormCreate(Sender: TObject);
begin
ADOQuery.Connection:= ADOCONN;
ADOChart.Connection:= ADOCONN;
PanelSet.Color:= LoadInterFace(frmFindMain);
Grid:= TExampleDBGrid.Create(nil);
Grid.ADOLink:= ADOCONN;
Grid.UserID:= UserID;
Grid.UserName:= UserName;
Grid.DBGrid:= DBGrid;
Grid.RMReport:= RMReport1;
Grid.RMDBDataSet:= RMDBDataSet1;
Grid.RMDesigner:= RMDesigner1;
Grid.TableName:= TableName;
Grid.TitleCaption:= TitCaption;
Grid.FindFlag:= True;
FindSql:= Grid.FormatDBGrid(True,True);
Application.ProcessMessages;
end;
当程序执行到 ADOQuery.Connection:= ADOCONN;就错了 而ADOCONN是我定义的一个公共变量。LoadInterFace,TExampleDBGrid是我自己定义的函数和自己封装的类,单独执行都没有问题。
接口函数如下:
function DllFindInterFace(var tmpADO: TADOConnection; tmpNo,tmpName,tmpTable,tmpCaption: pchar): TForm;
begin
ADOCONN:= tmpADO;
FindUserID:= string(tmpNo);
FindUserName:= string(tmpName);
TableName:= string(tmpTable);
TitCaption:= string(tmpCaption);
try
if not Assigned(frmFindMain) then
begin
Application.CreateForm(TfrmFindMain, frmFindMain);
Application.ProcessMessages;
end;
frmFindMain.Caption:= frmFindMain.Caption + ' -- ' + string(tmpCaption);
LoadInterFace(frmFindMain);
frmFindMain.GetFindInfo(TitCaption);
frmFindMain.Show;
Result:= frmFindMain;
except
on E: Exception do
begin
WriteLog('UfindInterFace -> DllFindInterFace -> 查询窗体初始化加载失败!'+ e.Message);
if Assigned(frmFindMain) then
begin
frmFindMain.Close;
frmFindMain:= nil;
end;
end;
end;
end;
窗体frmFindMain的Create事件如下:
procedure TfrmFindMain.FormCreate(Sender: TObject);
begin
ADOQuery.Connection:= ADOCONN;
ADOChart.Connection:= ADOCONN;
PanelSet.Color:= LoadInterFace(frmFindMain);
Grid:= TExampleDBGrid.Create(nil);
Grid.ADOLink:= ADOCONN;
Grid.UserID:= UserID;
Grid.UserName:= UserName;
Grid.DBGrid:= DBGrid;
Grid.RMReport:= RMReport1;
Grid.RMDBDataSet:= RMDBDataSet1;
Grid.RMDesigner:= RMDesigner1;
Grid.TableName:= TableName;
Grid.TitleCaption:= TitCaption;
Grid.FindFlag:= True;
FindSql:= Grid.FormatDBGrid(True,True);
Application.ProcessMessages;
end;
当程序执行到 ADOQuery.Connection:= ADOCONN;就错了 而ADOCONN是我定义的一个公共变量。LoadInterFace,TExampleDBGrid是我自己定义的函数和自己封装的类,单独执行都没有问题。