请说说ObjectPascal中的类和接口的区别,
特别是接口的用法,我不是很理解,能解析一下吗。
分不是问题.
特别是接口的用法,我不是很理解,能解析一下吗。
分不是问题.
解决方案 »
- 主窗口与子窗口的问题
- help----如何将查询的字段送到一个控件里去?
- 如何防止图象被截取?怎样用 API 的方式实现用鼠标拖动控件?
- 散分*题*怎样在listview中使用checkbox。
- 急求教:字节的位操作
- 如何实现滚动效果???
- 請問﹕怎樣限制用戶在dbedit中必須輸入數據﹐保証dbedit編輯框不為空﹖
- 只要能解决问题,高分随你拿!兄弟在线等待,欢迎各路豪杰参与!————数据库
- 如何使用ADOTABLE做出类似于INNER JOIN的结果
- 再问怎么发byte数据??
- -----------ADOconnection出毛病了----------
- 请问如何Debug MIDAS服务程序
然后你在Dll中向主程序返回了一个StringList的实例并由主程序调用了该实例的Add方法。这时候你会得到一个异常。很多人不理解为什么同一个类会出现这样的问题。其实你调用的只是连接在主程序中的TStringList的Add方法,而你其实应该调用Dll中的TStringList的Add方法才不会出异常。这两个TStringList虽然名称相同,但却不可以认为是同一个类,因为它们拥有完全不同的方法表(即它们各个方法的地址是不同的),所以你的Add调用会出错。2、如果你写了一个IStringList的接口并在Dll中实现了它(记住接口声明和实现通常是两个Unit),并在主程序中把接口声明连接了进去,那么你在主程序中调用IStringList1.add的时候就能够调用到Dll中接口实现部分的代码。所以一般地说在程序与Dll通信的时候使用接口作为参数要比使用对象要安全的多。
不过话又说回来,使用接口还有很多的注意点。相对也比较麻烦,所以在一个相对封闭的程序框架中并不常用。