【问题标题】:WrapText for WideString in DelphiDelphi 中 WideString 的 WrapText
【发布时间】:2012-03-14 14:04:53
【问题描述】:

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 中渲染:
  • 在 Internet Explorer 9 中呈现:
  • 使用 Segoe UI 在记事本中呈现:
  • 使用 Consolas 在记事本中呈现:
  • 在浏览器中以无衬线字体呈现:W̧̊
  • 在浏览器中以monospaced 字体呈现:W̧̊

【问题讨论】:

  • 这可能会导致从 Delphi 2009 复制源代码作为答案。无论如何都要 +1
  • @TLama:这就是为什么我将它标记为最后一个没有更好的宽字符串支持的 Delphi 版本(让 David 远离我!)
  • Tnt组件套装在TntSysUtils.pas中有WideWrapText
  • 我有一个梦想,有一天我会醒来,我的 D5 怪物应用程序会神奇地转变为 XE2...:/
  • @DavidHeffernan 让你安静!就这个问题而言,假装我处于“现代”时代。 :)

标签: delphi localization internationalization delphi-2007


【解决方案1】:

正如 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

【讨论】:

    猜你喜欢
    • 2011-05-05
    • 2012-06-06
    • 2013-08-17
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    相关资源
    最近更新 更多