我在调用包含ADOQuery组件的DLL后,程序关闭时总会跳出一个内存错误,去掉ADO调用就一切正常,那位大侠做过类似问题的能不能给个提示,万分感激!
已经试过各种方法,就差把ADOQuery从DLL在中去掉了!晕阿!
已经试过各种方法,就差把ADOQuery从DLL在中去掉了!晕阿!
解决方案 »
- 从d6升级到d7的问题。
- sql where中条件计算的小问题.
- QQ delphi 群,欢迎大家加入: 3010355
- synmemo控件的行列号问题,你会有新发现,给分求解,毕业设计急用~~
- ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆怎样使一个数据集的指针不指向任何一个记录??◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
- 哪位大哥对VB和Delphi都熟悉的?进来帮个忙啊!高分相送!!
- 初学者又一简单的问题?
- 为什么我的dbgrideh的合计值总是不变?
- D7+ADO+MSSQL2K 参数与双引号混用
- 问一个关于DbGrid的问题
- combobox的小问题
- 大家帮忙看看,这样的字符串是用的什么方法?加密解密?
Function LandFormCreate(Ha:THandle;ADOStr: String;TabName:string;IndexFN:string;
UserFN:string;PassFN:string;Ter: string;IntP: TIntP):
Boolean;
var
LandForm: TStencil_LandForm;
begin
Application.Handle := Ha;
Application.Tag := 0;
Try
Application.Initialize;
LandForm:=TStencil_LandForm.Create(Application);
Land.AdoCStr := ADOStr;
Land.IFN := IndexFN;
Land.UFN := UserFN;
Land.PFN := PassFN;
Land.TableName := TabName;
Land.Term := Ter;
IntPoint := IntP;
LandForm.ShowModal;
result := true;
Except
MessageDlg('´´½¨´°¿Úʧ°Ü£¡',mtError,[mbOK],0);
result := false;
End;
end;//调用过程
type
TIntP=^Integer;
TLandFun=Function (Ha:THandle;ADOStr: String;TabName:string;IndexFN:string;
UserFN:string;PassFN:string;Ter: string;IntP: TIntP):
Boolean;Stdcall;
var
Handle: THandle;
FunPro: TFarProc;
i:integer;
IntPoint: TIntP;
begin
FunPro := nil;
i := 0;
IntPoint := @i;
Handle := LoadLibrary(DLLPath + 'ProLand.dll'); if Handle > 32 then
try
Try
FunPro := GetProcAddress( Handle,PChar('LandFormCreate') );
except
MessageDlg('ÔØÈëDLLº¯Êý´íÎó£¡',mtError,[mbOK],0);
end; try
TLandFun(FunPro)( Finance_MainForm.Handle,
DataModule1.ADOQuery1.ConnectionString,'[1860_Op]',
'O_id','O_UName','O_PassWord','O_Type='+
chr(39) + 'Bursar' + chr(39),IntPoint );
except
showmessage('1µ÷Óóö´í£¡');
end;
Except
ShowMessage('2µ÷Óóö´í£¡');
end;
end;
procedure TStencil_LandForm.Land_ButtonClick(Sender: TObject);
var
pwd: string[32];
begin
if Trim( NameEdit.Text ) = '' then
begin
MessageDlg('ÇëÊäÈëÓû§Ãû£¡',mtError,[mbOK],0);
NameEdit.SetFocus;
Exit;
end; if Trim( PwdEdit.Text ) = '' then
begin
MessageDlg('ÇëÊäÈëÃÜÂ룡',mtError,[mbOK],0);
Exit;
end; pwd := md5s( PwdEdit.Text ); ADOQuery1 := TADOQuery.Create(self); ADOQuery1.ConnectionString := ADOCStr; ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add( 'select ' + IFN + ',' + UFN + ',' + PFN + ' From ' +
TableName + ' Where ' + UFN + '=' +
chr(39) + trim(NameEdit.Text) + chr(39) + ' and '
+ Term);
ADOQuery1.Open; if ADOQuery1.IsEmpty then
begin
MessageDlg('ÎÞ´ËÓû§Ãû£¬Çë¼ì²éÊäÈ룡',mtError,[mbOK],0);
Exit;
end
else
begin
ADOQuery1.First; repeat
if pwd = ADOQuery1.FieldByName( PFN ).AsString then
begin
IntPoint^ := 1;
Break;
end;
ADOQuery1.Next;
until ADOQuery1.Eof; ADOQuery1.Close; if IntPoint^ = 1 then
close
else
MessageDlg('ÃÜÂë´íÎó',mtError,[mbOK],0);
end;
end;
而且要在第一个位置