Free Pascal中的RawByteString类型

时间:2014-09-10 15:00:40

标签: delphi fpc rawbytestring

Free Pascal docs表示在{$ 1}}类型是在Free Pascal中定义但我找不到位置。人们应该期望它在RawByteString单元中定义,就像在Delphi中一样,但是当我编译(使用FPC 2.6.2,{$ mode delphi})函数声明

System

我收到编译错误

class function FromAnsi(const S: RawByteString): ByteArray; static;

猜猜我可以自己申报这个类型:

Error: Identifier not found "RawByteString"

但我想找到" native" FPC声明。


感谢您的快速解答。由于我不需要支持FPC 1.x,我需要的解决方法是:

type
  RawByteString = type AnsiString(CP_NONE);

2 个答案:

答案 0 :(得分:5)

您需要使用FPC 2.7.1。

2.6.x中不存在新的字符串类型

答案 1 :(得分:2)

来自您在问题中链接的documentation

  

直到并包括FPC 2.6.x,RTL基于Turbo   Pascal和Delphi 7.这意味着它主要基于   shortstring,ansistring和pchar类型。这些类型都没有   编码与它们相关的信息,但是被隐含地假设   在"默认系统编码中编码"并被传递给   OS API调用没有任何转换。

     

在Delphi 2009中,Embarcadero将整个RTL切换到了   UnicodeString类型,表示使用UTF-16的字符串。   此外,他们还制作了AnsiString类型"代码页感知"。   这意味着从那时起AnsiStrings包含代码页   据此,他们的数据应该被解释。

     

FPC对这些字符串类型的语言级支持已经存在   在当前开发版本的编译器中可用(FPC   2.7.1 /躯干)。 RTL级别支持尚未完成。此页面概述了这些字符串的代码页相关行为   类型,RTL中当前的支持级别以及可能的未来   如何改善这种支持的方式。

换句话说,对于新的D2009类似的字符串类型,您至少需要2.7。