delphi 反转内存的函数


本文整理自网络,侵删。

 
//按单字节反转内存的函数  
procedure ReverseMemory(P: PByte; Len: Integer); overload; 
var 
 B: Byte; 
 P2: PByte; 
begin 
 P2 := P; 
 Inc(P2, Len - 1); 
 while P < P2 do 
 begin 
  B := P^; 
  P^ := P2^; 
  P2^ := B; 
  Inc(P); 
  Dec(P2); 
 end; 
end; 
 
//按双字节反转内存的函数 
procedure ReverseMemory(P: PWord; Len: Integer); overload; 
var 
 W: Word; 
 P2: PWord; 
begin 
 P2 := P; 
 Inc(P2, Len div 2 - 1); 
 while Integer(P) < Integer(P2) do 
 begin 
  W := P^; 
  P^ := P2^; 
  P2^ := W; 
  Inc(P); 
  Dec(P2); 
 end; 
end; 
 
//按四字节反转内存的函数 
procedure ReverseMemory(P: PInteger; Len: Integer); overload; 
var 
 I: Integer; 
 P2: PInteger; 
begin 
 P2 := P; 
 Inc(P2, Len div 4 - 1); 
 while Integer(P) < Integer(P2) do 
 begin 
  I := P^; 
  P^ := P2^; 
  P2^ := I; 
  Inc(P); 
  Dec(P2); 
 end; 
end; 
 
//调用测试 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 bs: TBytes; 
 i: Integer; 
begin 
 SetLength(bs, 8); 
 for i := 0 to Length(bs) - 1 do bs[i] := i + 49; 
 ShowMessage(StringOf(bs)); {12345678} 
 
 for i := 0 to Length(bs) - 1 do bs[i] := i + 49; 
 ReverseMemory(PByte(bs), Length(bs)); 
 ShowMessage(StringOf(bs)); {87654321} 
 
 for i := 0 to Length(bs) - 1 do bs[i] := i + 49; 
 ReverseMemory(PWord(bs), Length(bs)); 
 ShowMessage(StringOf(bs)); {78563412} 
 
 for i := 0 to Length(bs) - 1 do bs[i] := i + 49; 
 ReverseMemory(PInteger(bs), Length(bs)); 
 ShowMessage(StringOf(bs)); {56781234} 
end; 

相关阅读 >>

Delphi memo 循环往上往下滚动

Delphi控件升级

Delphi varchar和nvarchar区别

Delphi 一组数据,按由大到小进行排序,并输出最大值与最小值

Delphi 如何编写使stringgrid中的一列具有check功能,和checkbox效果一样

Delphi获取进程占用内存

Delphi指针的定义和取值

Delphi内存映射大文件

Delphi中补齐字符串长度

Delphi xe8中的firemonkey应用程序将文本复制到剪贴板

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...