(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 ;
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 ;
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 ;
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 ;
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 ;