2012-03-14 21 views
7

Delphi có chức năng WrapText:WrapText cho WideString trong Delphi

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

Bây giờ tôi cần một phiên bản để xử lý WideStrings:

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

là bất kỳ chức năng như viết ở đâu đó chưa?

Chú ý: Không phải mọi nhân vật chuỗi rộng là 2-byte

Đó là lý do tại sao tôi sợ để viết nó

Cập nhật: Ví dụ về một nhân vật mà phải mất hơn 2 -byte để đại diện:

Capital Latin W with ring and cedilla

  • Bytes: 57 00 66 03 27 03
  • rendered trong Chrome 17: enter image description here
  • biểu hiện trong Internet Explorer 9: enter image description here
  • rendered trong Notepad sử dụng Segoe UI: enter image description here
  • rendered trong Notepad sử dụng Consolas : enter image description here
  • Hiển thị trong trình duyệt của bạn theo phông chữ sans-serif: W̧̊
  • Hiển thị trong trình duyệt của bạn theo kiểu monospaced phông chữ: W̧̊
+2

Điều này sẽ dẫn đến việc sao chép nguồn từ Delphi 2009 làm câu trả lời. +1 anyway – TLama

+5

@TLama: Đó là lý do tại sao tôi đã gắn thẻ nó là phiên bản cuối cùng của Delphi mà không có hỗ trợ widestring tốt hơn (để giữ David khỏi lưng tôi!) –

+4

phù hợp với thành phần Tnt có 'WideWrapText' trong' TntSysUtils.pas' – kobik

Trả lời

3

Như đã đề cập bởi kobik, TNT UnicodeControls có một đơn vị TntSysUtils trong đó bao gồm sau chức năng:

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

thay thế trang web tải về là here.

Các vấn đề liên quan