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 xe6 string转memorystream

Delphi模仿“千千静听”滚动标题栏,非常简单!

Delphi idhttp post中文的问题

Delphi adoquery1 update更新数据

Delphi显示 jpg、png、gif 图片及 gif 动画

Delphi窗口界面必学的知识

Delphi中ocx的动态注册方法

Delphi 把单张图片保存到access数据库

Delphi 获取所有应用程序窗口标题 类似任务管理器

Delphi idftp用法

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



打赏

取消

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

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

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

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

评论

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