最近做公司项目。模块化的程序,我们负责各个模块的功能实现,是写成DLL然后给主程序用的。
在我做的DLL里面用到了一个函数Biz2Packer.BeginPack;我找不到他的实现的地方,代码如下:// 调用beginpack打包
    Biz2Packer.BeginPack;//Biz2Packer.BeginPack;的声明代码
TBizPacker = class(TObject)
  public
    procedure BeginPack; virtual; abstract;
    ..//其他属性和方法省略
  end;到这里,小弟就再也找不到BeginPack的实现地方了。按道理,TBizPacker 这个抽象类的方法应该是在TBizPacker 的子类中实现的,可是当我在工程中却找不到有子类从TBizPacker 类中继承。
由于这里是在DLL的工程中完成的,主程序的代码我看不见,所以小弟有几个猜想。
1、BeginPack的实现是在主程序中完成的。(求告知这种写法是否合法,如果合法,要怎么用)
2、BeginPack是其他DLL或bpl中的方法。但是我在代码中没有看到任何静态或动态调用DLL的地方。如果是bpl中的方法,求大神告知,这种指定的写法。

解决方案 »

  1.   

    也没有使用BeginPack;的地方?
      

  2.   

    @DelphiGuy 有啊,第一句就是调用。
      

  3.   

    還是根本沒寫完
    TBizPacker 目前只停留在抽象階段?
    要看它實際的用處才知道要不要編寫一個子類實作同一個TBizPacker 定義應該不會出現在多個分割的子案裡
    除非不同子案間有先約定 TBizPacker 的定義文件不可以改
    不然這樣互相的依賴性太高
      

  4.   

    既然有调用,那肯定有子类的实现,或者class helper的实现,在IDE中按住ctrl键,鼠标指针指向该方法就会出现链接,点进去看看实现在哪里。
      

  5.   

    我在调用BeginPack的地方按CTRL+左键,直接跳转到procedure BeginPack; virtual; abstract;
    没有发现任何TBizPacker的子类实现了BeginPack方法。
    会不会是在主程序的代码中实现的,我这个DLL根本看不到?
      

  6.   

    DLL可以正常编译,加到主程序也能正常运行。问题是现在找不到实现BeginPack的代码
      

  7.   

    那你打开调试信息,把项目build一下,然后在调用BeginPack的地方下个断点,运行,跟踪进去看看。
      

  8.   

    感觉是个接口,实现封装在另一个dll里面
      

  9.   

    很可能是Dcu 或者 Bpl