WrapText для WideString в Delphi - PullRequest
       17

WrapText для WideString в Delphi

7 голосов
/ 14 марта 2012

Delphi имеет функцию WrapText:

function WrapText(const Line, BreakStr: string; const BreakChars: TSysCharSet; MaxCol: Integer): string;
function WrapText(const Line: string; MaxCol: Integer): string;

Теперь мне нужна версия, которая обрабатывает WideStrings:

function WrapTextW(const Line: WideString; MaxCol: Integer): WideString;

Такая функция уже где-то написана?

ВНИМАНИЕ: не каждый символ широкой строки имеет длину 2 байта

Вот почему я боюсь писать это

Обновление : пример символа, для представления которого требуется более 2 байтов:

заглавная латинская буква W с кольцом и седилой

  • Байт: 57 00 66 03 27 03
  • Отображается в Chrome 17: enter image description here
  • Отображается в Internet Explorer 9: enter image description here
  • Отображается в блокноте с использованием Segoe UI: enter image description here
  • Отображается в блокноте с помощью Consolas: enter image description here
  • Отображается в вашем браузере шрифтом без засечек: W̧̊
  • Отображается в вашем браузере шрифтом monospaced: W̧̊

1 Ответ

3 голосов
/ 01 мая 2012

Как упомянул Кобик, TNT UnicodeControls имеет блок TntSysUtils, который включает в себя следующую функцию:

function WideWrapText(const Line, BreakStr: WideString; const BreakChars: TSysCharSet;
  MaxCol: Integer): WideString; overload;
function WideWrapText(const Line: WideString; MaxCol: Integer): WideString; overload;

Альтернативный сайт для скачивания здесь .

...