首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

各位朋友,又要打扰大家了,关于delphi的有关问题

2013-11-02 
各位朋友,又要打扰大家了,关于delphi的问题大家好,请问一下procedureMove( const Source var Dest count

各位朋友,又要打扰大家了,关于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数据被覆盖.

热点排行