2014-09-10 7 views
2

Free Pascal docs утверждают, что тип RawByteString определен в Free Pascal, но я не могу найти где. Следует ожидать, что она определена в System единицы, как в Delphi, но когда я компилирую (с помощью FPC 2.6.2, {$} режим Дельфи) объявление функцииТип RawByteString в Free Pascal

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

Я получаю ошибку компилятора

Error: Identifier not found "RawByteString" 

Guess я могу объявить тип себя:

type 
    RawByteString = type AnsiString(CP_NONE); 

, но я хотел бы найти «родной» FPC декларации.


Благодарим за ответы. Поскольку мне не нужно поддерживать FPC 1.x, мне необходимо следующее:

{$IFDEF FPC} 
{$IF FPC_VERSION = 2} 
    {$IF FPC_RELEASE <= 6} 
    type 
     RawByteString = AnsiString; 
    {$IFEND} 
{$IFEND} 
{$ENDIF} 

ответ

5

Вам необходимо использовать FPC 2.7.1.

Новые типы строк не существует в 2.6.x

+1

Я не знаю о 'RawByteString', но' UnicodeString' был доступен в FPC с по меньшей мере 2.4.0, а FPC имеет режимы 'unicodestrings' и' delphiunicode', а 'FPC_UNICODESTRINGS' определяет, управлять/определить, отображается ли 'string' в' AnsiString' или 'UnicodeString'. –

+0

@RemyLebeau: с «новыми типами строк» ​​я ссылаюсь на строки с динамическим кодированием, а также на «UnicodeString/WideString/AnsiString» со статическим кодированием ... (хотя кто-то уже мог рассматривать «AnsiString» новый тип строки, сравнивая к «короткому замыканию») – BeniBela

2

Из documentation, что вы связаны с вопросом:

До и включая FPC 2.6.x, то RTL был основан на те из Turbo Паскаль и Дельфи 7. Это означает, что в основном это было основано на строках , которые являются персистентными и pchar. Ни один из этих типов не содержал ассоциированных с ними кодирующих данных, но неявно предполагалось, что кодируется в «системной кодировке по умолчанию» и передано по вызовам OS API без какого-либо преобразования.

В Delphi 2009 Embarcadero переключил весь RTL на тип UnicodeString , который представляет строки с использованием UTF-16. Кроме того, они также сделали тип AnsiString «доступным для кодовой страницы». Это означает, что AnsiStrings с этого момента содержат кодовую страницу , согласно которой их данные должны быть интерпретированы.

Поддержка языкового уровня FPC для этих типов строк уже есть , доступная в текущих версиях разработки компилятора (FPC 2.7.1/trunk). Поддержка уровня RTL еще не завершена. На этой странице представлен обзор поведения кодовых страниц этих строк , текущего уровня поддержки в RTL и возможных будущих способов улучшения этой поддержки.

Другими словами, для новых типов строк D2009 вам потребуется как минимум 2.7.

 Смежные вопросы

  • Нет связанных вопросов^_^