1、请问如何把 query 当成参数传递给 dll 中的某一函数昵?具体该怎么写呀????2、当dll中的函数执行某一查询,如何将查询结果返回给昵??

解决方案 »

  1.   

    建议楼主改变这种方法因为使用ADO的几个类当作dll参数传递时,在程序退出时会出现资源释放的错误。一定可以使用其它方法替代。
      

  2.   

    不要把对象直接传给DLL,而要把对象及其操作包装成普通函数和指针再传递给DLL,就像windows API那样,否则你的程序会死的很残
      

  3.   

    要把对象直接传给DLL,而要把对象及其操作包装成普通函数和指针再传递给DLL,就像windows API那样,
    请问具体该怎么作
    能否给一段例码
      

  4.   

    function OpenSQL(SQL: pchar): pointer;stdcall;
    var
      qry: TQuery;
    begin
      qry := TQuery.Create(...);
      qry.SQL.Text := SQL;
      qry.Open;
      Result := qry;
    end;type
    RQueryOprs = record
      function OpenSQL(SQL: pchar): pointer;stdcall;
      function ExecSQL(SQL: pchar): integer;stdcall;
      function Eof(Query: pointer): boolean;stdcall;
      ....
    end;
    PQueryOprs =^RQueryOprs;const
      query_oprs: RQueryOprs = (
        OpenSQL: thispage.OpenSQL;
        ExecSQL: thispage.ExecSQL;
        Eof: thispage.Eof;
        ....
      );将query_oprs的地址传入DLL即可,DLL可以通过函数表操作任何类型的SQL数据库
    为方便使用可以在DLL中将函数表包装成类