zoukankan      html  css  js  c++  java
  • Char、AnsiChar、WideChar、PChar、PAnsiChar、PWideChar 的用法

     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;

  • 相关阅读:
    68、成员列表初始化?
    67、类成员初始化方式?构造函数的执行顺序 ?为什么用成员初始化列表会快一 些?
    64、malloc申请的存储空间能用delete释放吗?
    63、new和delete的实现原理, delete是如何知道释放内存的大小的额?
    62、delete p、delete [] p、allocator都有什么作用?
    60、C++模板是什么,你知道底层怎么实现的?
    nyoj--814--又见拦截导弹(动态规划+贪心)
    hdoj--1950--Bridging signals(二分查找+LIS)
    nyoj--214--单调递增子序列(二)(二分查找+LIS)
    hdoj--1010--Tempter of the Bone(搜索+奇偶剪枝)
  • 原文地址:https://www.cnblogs.com/qi123/p/5099552.html
Copyright © 2011-2022 走看看