delphi SysUtils.StrCopy、SysUtils.StrECopy


本文整理自网络,侵删。

 
StrCopy  串专用函数: 复制串, 返回结果指针
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.

https://www.cnblogs.com/del/archive/2008/12/20/1359087.html

相关阅读 >>

Delphi 配置驱动程序(firedac)

Delphi搜索文件夹和文件

Delphi mscomm 比较完整的用法例子

Delphi中的record怎么动态分配内存?

Delphi只获取文件名(不带扩展名)

Delphi 手机app打开一个安卓系统支持的文件,比如 pdf

Delphi xe5 使用 android 内置函数几个小测试

Delphi判断线程是否正在运行

相对完整的多线程idhttp文件下载代码

Delphi char数组、string和pchar的相互转换

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...