2012-03-14 3 views
7

Delphi имеет WrapText функцию:WrapText для WideString в Delphi

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-байт

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

Update: Пример символа, который занимает более 2 -bytes представлять:

прописной латинской W с кольцом и седилем

  • Б: 57 00 66 03 27 03
  • Топленые в Chrome 17: enter image description here
  • визуализации в Internet Explorer 9: enter image description here
  • Rendered в блокноте с помощью Segoe UI: enter image description here
  • визуализации в блокноте с помощью Consolas : enter image description here
  • Вынесено в вашем браузере шрифтом без засечек: W-
  • Вынесено в вашем браузере monospaced шрифта: W̧̊
+2

Возможно, это поможет скопировать источник из Delphi 2009 в качестве ответа. +1 в любом случае – TLama

+5

@TLama: Вот почему я отметил его как последнюю версию Delphi, у которой не было лучшей поддержки в широте (чтобы удержать Дэвида от моей спины!) –

+4

Компонент Tnt-компонента имеет 'WideWrapText' в' TntSysUtils.pas' – kobik

ответ

3

Как упомянуто kobik, 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; 

Альтернативные загрузки сайт here.

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