写了一个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.
*******************************谢谢大家!
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.
*******************************谢谢大家!
解决方案 »
- 数据库同步演示
- 我抄了一段加密代码,好象不能进行中文加密!大家帮我看看!
- 各位帮忙以下错误怎么解决啊
- 小菜一碟-看到很多人在找,一个USB的例子,需要的顶顶!
- 关于Parameters和params的问题,请指教!
- 如何使窗体的所有Edit控件获得焦点时,Edit控件的属性Color为Blue?
- 客户端退出了,服务端也自动退出,但服务端所在机子的windows中的右下角还留有图标,why?
- 帮帮忙!!请进来看一下,我一定加分!!!
- 如何在Linux Server上远程执行局域网内某一台Windows操作系统的Delphi应用程序?
- 如何捕获全局错误,并获取错误详细信息。
- 如何在用PrintDBGridEh1打印DBGrideh1的时候能在打印的最后加上系统的日期!
- 请教,如何判断一个对象是否拥有某个属性?
我试过了,如果直接调用的话,没有错误。