在Linux下,这些在Libc单元定义。
在过程体中,你能依据哪个参数被传递给过程来指定要采取地行动。
Exceptions and runtime errors in libraries(库的异常和运行时错误) 当在动态调入库中有异常发生但没处理时,它传播到库的外面到达调用者。如果调用程序(或库)本身是用Object Pascal编写的,可通过标准的try...except语句处理它。
注意:在Linux下,只有当库和程序使用同一套运行包(包含EH代码)创建或者都链接到ShareExcept时才可以。
若调用程序(或库)是用其它语言编写的,异常被当作操作系统的异常(异常代码:$0EEDFACE)进行处理。在操作系统异常记录的ExceptionInformation数组的第一个入口中,包含了异常地址,第二个入口包含一个指向Object Pascal异常对象的引用。
通常,你不应该使异常扩散到库的外面。在Windows下,Delphi异常映射到操作系统的异常模型,Linux没有异常模型。
若一个库没有使用SysUtils单元,它不支持异常处理。这种情况下,若库发生运行时错误,调用程序将终止。因为库没有办法知道它是否从一个Object Pascal程序进行调用,它不能调用程序的退出过程,程序只是简单地被终止,并从内存中清除。
Shared-memory manager (共享内存管理器)
在Windows下,若DLL输出的例程以长字符串或动态数组作为参数或者作为函数的返回值(不管是直接的,还是通过记录或对象封装的),那么,DLL和它的客户程序(或DLL)必须使用ShareMem单元;当一个程序或DLL调用New或GetMem分配内存,而在另一个模块中调用Dispose或FreeMem来释放内存时,上面的规则同样适用。ShareMem单元应当在程序或库的uses子句中第一个列出。
ShareMem是BORLANDMM.DLL内存管理器的接口单元,它允许在模块间共享动态分配的内存。BORLANDMM.DLL必须连同使用ShareMem单元的程序和DLL一同发布。当程序或DLL使用ShareMem时,它的内存管理器被BORLANDMM.DLL中的取代。
Linux使用glibc的malloc来管理共享内存。
Packages(包)
Packages: Overview(概述)
包是一个特殊编译库,它被用于程序、IDE或者两者同时使用。包允许你在不影响源代码的情况下重新安排代码存在的时机,这有时称为application partitioning。(Packages allow you to rearrange when code resides without affecting the source code. This is sometimes referred to as application partitioning.)
Libraries and packages
时包才能工作。
为了区分包和其它库,包被存储在文件
? 在Windows下,包的扩展名是.bpl(Borland package library)
? 在Linux下,包通常以前缀bpl开始,扩展名是.so。
通常,程序启动时包被静态调入,但你可以使用LoadPackage和UnloadPackage例程(在SysUtils单元)来动态调入包。
注意:当程序利用包时,被打包的每个单元(名)还是要出现在使用它的每个源文件的uses子句中。 Package declarations and source files(包声明和源文件)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-102.html
没有股民来的水源
大东沟海战
期待你更好的未来~