我想把以下俩小段代码在DLL中只用一个过程或者函数表示出来,以后在程序中动态调用或者静态调用。我是初学者,请大家帮忙写一下。另外问一下这样的DLL在程序中用动态调用比较好还是静态调用比较好?
这是第一个:
 i:=0;
       tmp_floor[i]:=' dbo.Dict_RoomName.floor_ID <> 222 ';
       DataModule2.tb_dict_floor.first;
       while not  DataModule2.tb_dict_floor.Eof do
       begin
               i:=i+1;
               tmp_floor[i]:=' dbo.Dict_RoomName.floor_ID ='+inttostr( DataModule2.tb_dict_floor['floor_ID']);
               cb_floor.Items.Add( DataModule2.tb_dict_floor['floor_name']);
               DataModule2.tb_dict_floor.Next;
       end;
这是第二个:
       i:=0;
       tmp_roomstate[i]:='  dbo.Dict_RoomName.ROOM_STATEID <> 222 ';
       DataModule2.tb_dict_roomstate.first;
       while not  DataModule2.tb_dict_roomstate.Eof do
       begin
               i:=i+1;
               tmp_roomstate[i]:=' dbo.Dict_RoomName.ROOM_STATEID ='+inttostr(DataModule2.tb_dict_roomstate['ROOMSTATE_ID']);
               cb_roomstate.Items.Add( DataModule2.tb_dict_roomstate['roomstate_name']);
               DataModule2.tb_dict_roomstate.Next;
       end;

解决方案 »

  1.   

    为什么要封成一个?这么少的代码量,重复内容也不多,没觉得过个对象指针回去能简单多少,为什么不简单点直接用选择子呢?
    i := 0;
    if AddFloor then begin
      // 第一段代码
    end else begin
      // 第二段代码
    end;静态Dll加载方便,动态灵活性能,看着办吧,一般我用静态的(自已的DLL总是会用到的吧)。
      

  2.   

    要把他写成DLL是因为这样的代码在程序中要重复使用十多次,如果写成DLL,那么我以后每次调用就可以了,不必在重复写代码。还有一个原因是想学习一下DLL的写法,请大家帮帮忙写成DLL形式可以吗,谢谢。
      

  3.   

    library MyDll;uses
      SysUtils, Classes, ...{$R *.res}var
      Bak_ExitProc: Pointer;procedure DoExit;
    begin
      // Dll释放代码
      ExitProc := Bak_ExitProc;
    end;procedure MyProcedure(...);  stdcall;
    begin
      // 你的代码
    end;Exports
      MyProcedure;begin
      Bak_ExitProc := ExitProc;
      ExitProc := @DoExit;
      // Dll初始化代码
    end;