delphi 的内存操作函数(5): 复制内存  
官方Delphi 学习QQ群: 682628230(三千人)
频道

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 等流类, 它们自身提供的复制操作更方便.
推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.036738872528076 seconds