FreePascal Users guide 2.6 7.3.2 Missing calls / API incompatibilities
Delphi 和Windows紧密地结合在一起,所以它的API引入了很多Windows的概念(比如文件搜索,打开和加载库文件等等)。
FreePascal 被设计为可移植的,所以太贴近Windows的特性被舍弃了。下面是需要注意的要点:
- FreePascal默认生成控制台应用程序。你需要在生成Windows GUI应用程序的时候显示启用这个特性:
{$APPTYPE GUI}
- Windows 单元提供了访问大多数Win32 核心API的功能。其中的一些调用通过指针(就像C语言)而不是通过引用来传递参数(var关键字)。针对大多数的这类调用,Free Pascal提供了重载版本。(译者注:这些重载版本使用引用来传递参数)
- 宽字符串。众多的平台提供了不同的处理宽字符串编码和多字符集的方式,所以Free Pascal默认没有启用宽字符串管理器。FPC支持宽字符串,但是编码方式可能和Windows不同。为了在Unix/LINUX平台下正确地使用宽字符串管理器,你需要包含 cwstring 单元:这个单元使用一些必要的回调来初始化宽字符串管理器,这些回调使用C库函数来实现所有必需的宽字符串功能。
- 线程。目前Free Pascal还没有在所有的平台上提供本地线程管理。在Unix平台上,FPC应用程序需要链接到C库来提供线程管理,也就是要包含cthreads单元来启用线程。
- 一个被引用过很多次的例子是 SetLastOSError 调用,该调用不被支持,并且永远也不会。
- 文件名大小写敏感性。Pascal是一门大小写不敏感的语言,所以 users 语句应当也是大小写不敏感的。Free Pascal 通过搜索小写的文件名来确保这一点。Kyli不这样做,所以如果同一个路径下存在两个只有大小写不同的文件时就可能产生问题。