读书人

各位朋友又要打扰大家了关于delph

发布时间: 2013-11-02 19:41:10 作者: rapoo

各位朋友,又要打扰大家了,关于delphi的问题
大家好,请问一下procedure Move( const Source; var Dest; count : Integer );
{$IFDEF PUREPASCAL}
var
S, D: PChar;
I: Integer;
begin
S := PChar(@Source);//取内存地址
D := PChar(@Dest);//取内存地址
if S = D then Exit;
if Cardinal(D) > Cardinal(S) then
for I := count-1 downto 0 do
D[I] := S[I]
else
for I := 0 to count-1 do
D[I] := S[I];
end;


上面的是move的原函数,我不明白的是为啥要Cardial(D)>Cardinal(s),然后两种(if else),不就是把source给destination吗,干吗非要一会从count-1 到0 ,一会从0到count, delphi??库函数???编程?
[解决办法]
D和S是Pointer,Pointer不能直接比大小,要强制转成Cardinal比,然后为了防止src和dst内存重叠时候,src数据被覆盖.

读书人网 >.NET

热点推荐