写了一个DLL,目的是进行数据库的查询,结果是可以正常的执行能返回预定的结果,但程序关闭的时候会出现如下错误:
Project Project1.exe raised exception class EInvalidPointer with message 'Invalid pointer operation'. Process stopped. Use Step or Run to continue.小弟驽钝,不知如何是好,欢迎各位指教,代码如下:
DLL:
*******************************
library testdll;uses
  sharemem,
  SysUtils,
  ADODB,
  ActiveX,
  Classes;{$R *.res}function SearchAdo(Sqlstr: String): TADODataset;stdcall;
begin
  SearchAdo := TADODataset.Create(nil);
  SearchAdo.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=home';
  SearchAdo.Active := false;
  SearchAdo.CommandText := Sqlstr;
  SearchAdo.Active := true;
end;exports
  searchado;
beginend.*******************************主程序代码:
*******************************
unit Unit1;interfaceuses
  sharemem, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, ActiveX, StdCtrls, DBTables;type  TForm1 = class(TForm)
    Button1: TButton;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ADODataSet1: TADODataSet;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;implementation{$R *.dfm}
function SearchAdo(sqlstr: string): TADODataset;stdcall;  external 'testdll.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
  datasource1.DataSet := SearchAdo('select * from authors');
end;
end.
*******************************谢谢大家!