小弟写了一个共享单元的模块,现在要把它写到一个dll文件里去,看哪位高手能否
帮帮我列...
共享单元的代码如下:
unit mydata;interface
uses DB,database,DBGrids,ADODB,ComObj,ComCtrls,TFlatComboBoxUnit;
const
  adOpenDynamic = 2;
  adOpenStatic = 3;
  adLockOptimistic = 3;
  adCmdText = 0001;
var
  struser:string;
  AConnection, ARecordSet:Variant;//ADO数据连接项
  Strsql :string;//数据库路径
  Itemx: TListItem;
  Function opencon:Variant;
  Function openrec(strsql: string):Variant;
  Function bangding_cbo(var mycombo:TFlatComboBox;sqlSql: String;num1: Integer;num2: Integer):Variant;implementationFunction opencon():Variant;
begin
  Strsql:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\酒店客房管理.mdb;Persist Security Info=False';
  AConnection:=CreateOleObject('ADODB.Connection');
  If AConnection.state=stOpen then
    begin
      AConnection.Close;
    end;
    AConnection.Open(Strsql);
end;Function openrec(strsql: string):Variant;
begin
  ARecordSet:=CreateOleObject('ADODB.RecordSet');
  If ARecordSet.state=stOpen then
    begin
      ARecordSet.Close;
    end;
    ARecordSet.Open(strsql,AConnection,adOpenDynamic,adLockOptimistic,adCmdText);
end;Function bangding_cbo(var mycombo:TFlatComboBox;sqlSql: String;num1: Integer;num2: Integer):Variant;
begin
  openrec(sqlSql);
  ARecordSet.MoveFirst;
  while not ARecordSet.Eof do
  begin
    mycombo.Items.Add(ARecordSet.Fields[num1].value);
    ARecordSet.MoveNext;
  end;
  mycombo.ItemIndex := num2;
end;

解决方案 »

  1.   

    建DLL工程,引用你这个单元,然后export要引出的函数就可以了
      

  2.   

    library my_data;uses
      SysUtils,
      Classes,
      mydata in 'mydata.pas';Exports
      opencon;
      openrec;
      bangding_cbo;begin
    end.unit mydata;interface
    uses DB,database,DBGrids,ADODB,ComObj,ComCtrls,TFlatComboBoxUnit;
    const
      adOpenDynamic = 2;
      adOpenStatic = 3;
      adLockOptimistic = 3;
      adCmdText = 0001;
    var
      struser:string;
      AConnection, ARecordSet:Variant;//ADO数据连接项
      Strsql :string;//数据库路径
      Itemx: TListItem;
      Function opencon:Variant;StdCall; export;
      Function openrec(strsql: string):Variant;StdCall; export;
      Function bangding_cbo(var mycombo:TFlatComboBox;sqlSql: String;num1: Integer;num2: Integer):Variant;StdCall; export;implementationFunction opencon():Variant;
    begin
      Strsql:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\酒店客房管理.mdb;Persist Security Info=False';
      AConnection:=CreateOleObject('ADODB.Connection');
      If AConnection.state=stOpen then
        begin
          AConnection.Close;
        end;
        AConnection.Open(Strsql);
    end;Function openrec(strsql: string):Variant;
    begin
      ARecordSet:=CreateOleObject('ADODB.RecordSet');
      If ARecordSet.state=stOpen then
        begin
          ARecordSet.Close;
        end;
        ARecordSet.Open(strsql,AConnection,adOpenDynamic,adLockOptimistic,adCmdText);
    end;Function bangding_cbo(var mycombo:TFlatComboBox;sqlSql: String;num1: Integer;num2: Integer):Variant;
    begin
      openrec(sqlSql);
      ARecordSet.MoveFirst;
      while not ARecordSet.Eof do
      begin
        mycombo.Items.Add(ARecordSet.Fields[num1].value);
        ARecordSet.MoveNext;
      end;
      mycombo.ItemIndex := num2;
    end;
      

  3.   

    新建DLL工程
    library my_data;uses
      SysUtils,
      Classes,
      mydata in 'mydata.pas';//引用你的单元Exports  //声明允许外部调用的函数或过程名
      opencon;
      openrec;
      bangding_cbo;begin
    end.注意外部调用的函数声明 StdCall; export;  Function opencon:Variant;StdCall; export;
      Function openrec(strsql: string):Variant;StdCall; export;
      Function bangding_cbo(var mycombo:TFlatComboBox;sqlSql: String;num1: Integer;num2: Integer):Variant;StdCall; export;
      

  4.   

    照以上所示,但在编译时,就提示:
    Declaration expected but identifier 'openrec' found
    Declaration expected but identifier 'bangding_cbo' found
    还是不行撒,有没有那位仁兄帮我试一下啊
      

  5.   

    编译不能通过,报错为:
    Declaration expected but identifier 'openrec' found
    Declaration expected but identifier 'bangding_cbo' found
    有没有那位仁兄能帮我试一下啊!马上给分...
      

  6.   

    新建DLL工程
    library my_data;uses
      SysUtils,
      Classes,
      mydata in 'mydata.pas';//引用你的单元Exports  //声明允许外部调用的函数或过程名
      opencon,
      openrec,
      bangding_cbo;begin
    end.注意分号改为逗号,应该可以的。
      

  7.   

    把Exports  //声明允许外部调用的函数或过程名
      opencon;
      openrec;
      bangding_cbo;
    改为:
    Exports
      openrec,opencon, bangding_cbo;
      

  8.   

    DLL编译成功了,但不知如何调用撒...,拜托指点一下。