(1) 字符串
//最常用的 string
var
str: string; {定义}
begin
str := '万一'; {赋值}
ShowMessage(IntToStr(Length(str))); {长度是: 4}
str:='AA';
ShowMessage(IntToStr(Length(str)));{长度是: 2}
str:=#$AA;
ShowMessage(IntToStr(Length(str)));{长度是: 1}
end;
(2) 字符
//单字符 Char, 只有 1 字节大小
var
c: Char; {Char 类型的取值范围是: #0..#255, 用十六进制表示是: #$0..#$FF}
begin
{用十进制方式赋值:}
c := #65;
ShowMessage(c); {A}
{用十六进制方式赋值:}
c := #$41;
ShowMessage(c); {A}
{用 Chr 函数代替 # 符号}
c := Chr(65);
ShowMessage(c); {A}
c := Chr($41);
ShowMessage(c); {A}
{Char 长度当然会是 1}
ShowMessage(IntToStr(Length(c))); {1}
{Char、AnsiChar 允许这样方便地赋值(也就是和 1 字节长度的字符串是兼容的):}
c := 'B';
ShowMessage(c); {B}
end;
(3) 字符串和字符数组
{字符串 < > 字符数组}
var
arr: array[0..5] of Char;
str: string;
begin
{可以把字符串常量直接赋给字符数组; 但超界不行}
arr := 'Delphi';
ShowMessage(arr); {Delphi}
{可以把字符数组直接赋给字符串变量}
str := arr;
ShowMessage(str); {Delphi}
{其实字符串内部也是包含了一个字符数组, 所以能索引访问, 不过它的索引起始于 1}
ShowMessage(str[1]); {D}
ShowMessage(arr[0]); {D}
{但不能把一个字符串变量赋给字符数组}
//arr := str; {错误; 这需要用其他手段实现, 譬如复制或移动内存}
end;
(4)Char 与 Byte,Ord和Chr
Byte是一个Integer类型的变量,取值范围 0..255,即 unsigned 8-bit
var
c: Char;
b: Byte;
begin
c := 'A';
ShowMessage(c); //A
b := 65;
ShowMessage(IntToStr(b)); //65
c := Chr(66);
ShowMessage(c); //B
b := Ord('B');
ShowMessage(IntToStr(b)); //66
end;
Ord函数是用于取得一个ASCII码的数值。 Chr函数正好相反,用于取得一个数值的ASCII值
{Char 类型与其编码值的转换:}
var
b: Byte;
c: Char;
begin
b := Ord('A'); {返回: 65}
b := Ord(#65); {返回: 65}
b := Ord($41); {返回: 65}
b := Ord(#$41); {返回: 65}
b := Byte('A'); {返回: 65}
b := Byte(#65); {返回: 65}
b := Byte($41); {返回: 65}
b := Byte(#$41); {返回: 65}
c := Chr(65); {返回: A }
c := Chr($41); {返回: A }
c := Char(65); {返回: A }
c := Char($41); {返回: A }
end;