zoukankan      html  css  js  c++  java
  • SysUtils.StrCopy、SysUtils.StrECopy

    StrCopy 和 StrECopy 都是复制源 PChar 串到目标 PChar 串, 只是返回值不同;
    StrCopy 返回结果的首地址, StrECopy 返回结果的尾(#0)地址.
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    //一般用法, 看不出 StrCopy 与 StrECopy 的区别
    procedure TForm1.Button1Click(Sender: TObject);
    var
      arr: array[0..3] of Char; {假如 PChar 长度是 3, 这里数组要大出一个, PChar 最后还有一个 #0}
    begin
      StrCopy(arr, 'ABC');
      ShowMessage(arr);    {ABC}
      
      StrCopy(arr, '123');
      ShowMessage(arr);    {123}
    
      StrECopy(arr, 'ABC');
      ShowMessage(arr);    {ABC}
      
      StrECopy(arr, '123');
      ShowMessage(arr);    {123}
    end;
    
    //测试 StrCopy 及其返回值:
    procedure TForm1.Button2Click(Sender: TObject);
    var
      p1,p2,p3,p: PChar;
    begin
      p1 := '123456789';
      p2 := 'ABC';
    
      p3 := PChar(StringOfChar(#0, 9)); {这里用 StringOfChar 代替了 GetMem}
      
      p := StrCopy(p3, p1);
      ShowMessageFmt('%s, %s', [p3, p]); {123456789, 123456789}
    
      p := StrCopy(p3, p2);
      ShowMessageFmt('%s, %s', [p3, p]); {ABC, ABC}
    
      ShowMessageFmt('%s, %s', [p3+4, p+4]); {56789, 56789}
    end;
    
    //测试 StrECopy 及其返回值:
    procedure TForm1.Button3Click(Sender: TObject);
    var
      p1,p2,p3,p: PChar;
    begin
      p1 := '123456789';
      p2 := 'ABC';
    
      p3 := PChar(StringOfChar(#0, 9)); {这里用 StringOfChar 代替了 GetMem}
      
      p := StrECopy(p3, p1);
      ShowMessageFmt('%s, %s', [p3, p]); {123456789, }
    
      p := StrECopy(p3, p2);
      ShowMessageFmt('%s, %s', [p3, p+1]); {ABC, 56789}
    end;
    
    
    //可以巧妙利用 StrECopy 的返回值:
    procedure TForm1.Button4Click(Sender: TObject);
    var
      p: PChar;
    begin
      GetMem(p, 10);
    
      StrECopy(StrECopy(p,'12345'), '67890');
      ShowMessage(p); {1234567890}
      
      FreeMem(p);
    end;
    
    end.
    
    SysUtils 单元下的公用函数目录

  • 相关阅读:
    类库探源——开头
    码的生产——(二维码、条形码)
    java 接口
    Eclipse下修改工程名
    Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、
    oracle中SQL根据生日日期查询年龄的方法
    TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。
    【kettle】window安装与配置
    SQL SELECT语句
    Oracle 查询类似 select top 的用法
  • 原文地址:https://www.cnblogs.com/del/p/1194010.html
Copyright © 2011-2022 走看看