大家好,请问一下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 库函数 编程
{$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 库函数 编程
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货