关于StrPCopy解决办法

关于StrPCopy
procedure TForm1.Button1Click(Sender: TObject);
var arrChar: array[0..255] of Char; 
begin
StrPCopy(arrChar, 'Come on, baby!');////////
ShowMessage(arrChar);
arrChar := 'aabbddddd';////
ShowMessage(arrChar);
end;
第一种字符串复制到字符数组中,和第二种直接赋值有何区别?
------解决思路----------------------
都是复制内存,对本例来讲,arrChar := 'aaaaa';效率更高直接用MOV或REP MOVSB/SW/SD 完成了
StrPCopy(arrChar, 'Come on, baby!');
这个是调用函数,最后用Move函数完成,虽然最终是REP MOVSD/MOVSB完成,但是前面的判断指令太多了,效率上没后者快
------解决思路----------------------
对于字符容量足够的时候, 2者没多大区别, 但是你试试把arrchar的长度缩小到1个的时候, 你就知道strpcopy是不安全的了
------解决思路----------------------
引用:
对于字符容量足够的时候, 2者没多大区别, 但是你试试把arrchar的长度缩小到1个的时候, 你就知道strpcopy是不安全的了


delphi2007帮助
StrPCopy does not perform any length checking.  
The destination buffer must have room for at least Length(Source)+1 characters.