Delphi 的内存操作函数(5): 复制内存


本文整理自网络,侵删。

 Delphi 的内存操作函数(5): 复制内存

MoveMemory、CopyMemory 的功能是一模一样的, 都是复制内存, 都是调用 Move 过程;

MoveMemory、CopyMemory 操作指针; Move 操作实体.

还要注意, 它们的参数位置不一样!
--------------------------------------------------------------------------------

举例:
--------------------------------------------------------------------------------

{例1}
var
buf1,buf2: array[0..9] of AnsiChar;
begin
buf1 := '0123456789';
buf2 := 'abcdefghij';

Move(buf2[2], buf1[4], 5);

ShowMessage(buf1); {0123cdefg9}
ShowMessage(buf2); {abcdefghij}
end;

{例2}
var
buf1,buf2: array[0..9] of AnsiChar;
begin
buf1 := '0123456789';
buf2 := 'abcdefghij';

CopyMemory(@buf2[2], @buf1[4], 5);

ShowMessage(buf1); {0123456789}
ShowMessage(buf2); {ab45678hij}
end;

{例3}
var
s1,s2: TStringStream; {两个字符串流}
begin
s1 := TStringStream.Create;
s2 := TStringStream.Create;

{向第一个字符串流写入}
s1.WriteString('万一的 Delphi 博客');
ShowMessage(s1.DataString); {万一的 Delphi 博客}

{设置第二个字符串流的大小}
s2.SetSize(6);
{从第一个流复制到第二个流}
CopyMemory(s2.Memory, s1.Memory, s2.Size);
ShowMessage(s2.DataString); {万一的}

s1.Free;
s2.Free;
end;
--------------------------------------------------------------------------------

这里仅仅是为了测试, 如果真的使用 TMemoryStream、TStringStream 等流类, 它们自身提供的复制操作更方便.

相关阅读 >>

Delphi 先加载原内容在写入增加新内容

Delphi rest api post sample

Delphi 模拟按键的一些误解

Delphi listview1 中添加check选中事件

Delphi 动态注册卸载ocx

Delphi webbrowser用记事本查看源代码

Delphi图片增加文字水印

Delphi按下esc键就退出程序

Delphi datetimepicker控件日期格式

Delphi idhttp 获取链接连通状态

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



打赏

取消

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

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

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

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

评论

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