PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR count:Integer;
text1:String;
BEGIN
text1 := 'Line1'+#13#10+'® Line2'+#13#10+'Line3';
FOR count := 1 TO Length(text1) DO
ShowMessage(Copy(text1,count,4));
END;
所以...... unicode 文字的字符代码大约有4个数字;
因为可用性很不在乎它是如何工作的,
意味着变得复杂,as it is
的事情变得更加简单;
然后从没有关于所有这些东西的文档,
将是知道如何仅为字符串中的第一个标识复制字符代码;
使用copy命令仅获取未引用为#
的{{1}};
string 'string'
;代码'Line1'
;
然后这是关于::
的问题
[?] 如何使用复制命令,其中 unicode 的详尽支持,
[?] 从示例中它可以完美地显示带有#13#10
等符号的消息,从而获得其字符代码?
执行复制(text1,1,1)以从每个代码返回第一个®
时 [?] 含义;
编辑:是的...函数长度计算加法字符;
EDIT2:使用#
时遇到'|'+copy(text1,1,1)+'|'
那是什么意思,它会返回完全空白的消息?
这将创建一个函数来避免返回RTL
这样的功能®
来自某些ASCII限制;
其他人不支持 像Copy;
答案 0 :(得分:0)
Lazarus默认使用UTF-8编码,因此字节长度(以字节为单位)可以变化(我知道从ASCII字符的1个字节到某些特殊字符的4个字节)。
示例:
program project1;
{$mode objfpc}{$H+}
uses
LazUnicode, LazUTF8;
var
// 12345678901234
s: string = 'Παράδειγμα 123';
c: string;
begin
Writeln(Length(s)); // 24, length in bytes (10 2-bytes chars + 4 ASCII chars)
Writeln(UTF8Length(s)); // 14, length in chars (code poits)
// To enumerate characters in string, LazUnicode unit should be in "uses" clause
// "c" variable declared as "string" because it can hold more then one bytes
for c in s do
Writeln(c);
// Copy code point(s) (not byte(s))
Writeln(UTF8Copy(s,1,1));
end.