SysUtils.StrCopy、SysUtils.StrECopy

StrCopy 和 StrECopy 都是复制源 PChar 串到目标 PChar 串, 只是返回值不同;
StrCopy 返回结果的首地址, StrECopy 返回结果的尾(#0)地址.


1unit Unit1; 2 3interface 4 5uses 6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 Dialogs, StdCtrls; 8 9type 10 TForm1 = class(TForm) 11 Button1: TButton; 12 Button2: TButton; 13 Button3: TButton; 14 Button4: TButton; 15 procedure Button1Click(Sender: TObject); 16 procedure Button2Click(Sender: TObject); 17 procedure Button3Click(Sender: TObject); 18 procedure Button4Click(Sender: TObject); 19 end; 20 21var 22 Form1: TForm1; 23 24implementation 25 26{$R *.dfm} 27 28//一般用法, 看不出 StrCopy 与 StrECopy 的区别 29procedure TForm1.Button1Click(Sender: TObject); 30var 31 arr: array[0..3] of Char; {假如 PChar 长度是 3, 这里数组要大出一个, PChar 最后还有一个 #0} 32begin 33 StrCopy(arr, 'ABC'); 34 ShowMessage(arr); {ABC} 35 36 StrCopy(arr, '123'); 37 ShowMessage(arr); {123} 38 39 StrECopy(arr, 'ABC'); 40 ShowMessage(arr); {ABC} 41 42 StrECopy(arr, '123'); 43 ShowMessage(arr); {123} 44end; 45 46//测试 StrCopy 及其返回值: 47procedure TForm1.Button2Click(Sender: TObject); 48var 49 p1,p2,p3,p: PChar; 50begin 51 p1 := '123456789'; 52 p2 := 'ABC'; 53 54 p3 := PChar(StringOfChar(#0, 9)); {这里用 StringOfChar 代替了 GetMem} 55 56 p := StrCopy(p3, p1); 57 ShowMessageFmt('%s, %s', [p3, p]); {123456789, 123456789} 58 59 p := StrCopy(p3, p2); 60 ShowMessageFmt('%s, %s', [p3, p]); {ABC, ABC} 61 62 ShowMessageFmt('%s, %s', [p3+4, p+4]); {56789, 56789} 63end; 64 65//测试 StrECopy 及其返回值: 66procedure TForm1.Button3Click(Sender: TObject); 67var 68 p1,p2,p3,p: PChar; 69begin 70 p1 := '123456789'; 71 p2 := 'ABC'; 72 73 p3 := PChar(StringOfChar(#0, 9)); {这里用 StringOfChar 代替了 GetMem} 74 75 p := StrECopy(p3, p1); 76 ShowMessageFmt('%s, %s', [p3, p]); {123456789, } 77 78 p := StrECopy(p3, p2); 79 ShowMessageFmt('%s, %s', [p3, p+1]); {ABC, 56789} 80end; 81 82 83//可以巧妙利用 StrECopy 的返回值: 84procedure TForm1.Button4Click(Sender: TObject); 85var 86 p: PChar; 87begin 88 GetMem(p, 10); 89 90 StrECopy(StrECopy(p,'12345'), '67890'); 91 ShowMessage(p); {1234567890} 92 93 FreeMem(p); 94end; 95 96end. 97 98 99 100 101 102 103 104 105 106 107 108 109

SysUtils 单元下的公用函数目录


点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

SpringBoot自定义序列化的使用方式

场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x