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

//UniCode 字符 WideChar; 和 AnsiChar 不同, WideChar 是占 2 字节大小.
var
c: WideChar; {WideChar 的取值范围是: #0..#65535, 用十六进制表示是: #$0..#$FFFF}
begin
{WideChar 兼容了 AnsiChar 的 #0..#255; 但占用了 2 字节大小}
c := #65;
ShowMessage(c); {A}
ShowMessage(IntToStr(Length(c))); {1; 这是字符长度}
ShowMessage(IntToStr(SizeOf(c))); {2; 但占用 2 个字节}

{用十六进制赋值}
c := #$4E07;
ShowMessage(c); {万}
ShowMessage(IntToStr(Length(c))); {1; 这是字符长度}
ShowMessage(IntToStr(SizeOf(c))); {2; 但占用 2 个字节}

{用十进制赋值}
c := #19975;
ShowMessage(c); {万}

{如果不超出 #255 的范围是可以直接赋值的}
c := 'B';
ShowMessage(c); {万}

{这样不行}
//c := '万'; {这是 Delphi 的支持问题, 估计 Delphi 2008 应该可以解决}

{可以这样变通一下:}
c := WideString('万')[1];
ShowMessage(c); {万}

{用 WideChar 的方式显示我的名字}
ShowMessage(#19975#19968); {万一}
ShowMessage(#19975 + #19968); {万一}
ShowMessage(#$4e07#$4e00); {万一}
end;
--------------------------------------------------------------------------------

//字符指针 PChar、PAnsiChar; 在当前版本(2007)中它们没有区别.
var
p: PChar;
str: string;
begin
{可以给 PChar 直接赋予字符串常量}
p := '万一';
ShowMessage(p); {万一}
ShowMessage(IntToStr(Length(p))); {4}

{给变量值需要转换}
str := '万一的 Delphi 博客';
p := PChar(str); {转换}
ShowMessage(p); {万一的 Delphi 博客}
ShowMessage(IntToStr(Length(p))); {18}
end;
--------------------------------------------------------------------------------

//宽字符指针 PWideChar
var
p: PWideChar;
str: WideString; {注意这里不是 String}
begin
{可以给 PWideChar 直接赋予字符串常量}
p := '万一';
ShowMessage(p); {万一}
ShowMessage(IntToStr(Length(p))); {2}

{给变量值需要转换}
str := '万一的 Delphi 博客';
p := PWideChar(str); {转换}
ShowMessage(p); {万一的 Delphi 博客}
ShowMessage(IntToStr(Length(p))); {13}
end;

最新文章

  1. Java的国际化(i18n)
  2. glusterfs 内存管理方式
  3. 关于16年2月14日以后上传AppStore出现:Missing iOS Distribution signing identity for...的问题
  4. DataTable.select() 返回 DataTable
  5. 有关Ajax实现的两种方法
  6. 在Cocos2d-X中新建Android项目
  7. iOS判断字符串是否包含表情字符
  8. Android - 支持不同的设备
  9. SELECT 场 FROM 表 WHERE 字段 Like 条件
  10. Linux脚本学习随记
  11. Elasticsearch-sql 用SQL查询Elasticsearch
  12. Vue源码后记-更多options参数(1)
  13. 如何构造一个简单的USB过滤驱动程序
  14. 部署GlusterFS及Heketi
  15. java 可设置最大内存
  16. [c#.net]未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的文件
  17. Debian & CentOS建立本地iso源
  18. 【Canal源码分析】TableMetaTSDB
  19. 最简单,最实用的数据库CHM文档生成工具——DBCHM
  20. 2.3 C++类的信息隐藏机制 -- 封装

热门文章

  1. Android 在Windows上安装FFmpeg程序
  2. [BS-11] 关于RGB/ARGB颜色相关知识
  3. 第三篇 SQL Server代理警报和操作员
  4. Unity插件研究院之ResourceChecker
  5. SQLServer数据库的一些全局变量
  6. 使用NSURLSession请求需要AD认证的HTTPS服务器
  7. [Call Vibrator] How to Enable Outgoing Call Vibration without ROOT
  8. MVC4相关Razor语法以及Form表单
  9. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(6)
  10. 转:Tomcat配置