delphi 查看内存数据的函数


本文整理自网络,侵删。

 查看内存数据的函数
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{用十六进制查看内存的函数; 参数1是内存起点, 参数2是以字节为单位的长度}
function ToHex(p: PByteArray; b: Integer): string;
var
i: Integer;
begin
for i := 0 to b - 1 do
Result := IntToHex(p^[i], 2) + Chr(32) + Result;
Result := TrimRight(Result);
end;

{用二进制查看内存的函数; 参数1是内存起点, 参数2是以字节为单位的长度}
function ToBin(p: PByteArray; b: Integer): string;
const
Convert: array['0'..'F'] of string = (
'0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001',
'', '', '', '', '', '', '', '1010', '1011', '1100', '1101', '1110', '1111');
var
i: Integer;
s: string;
begin
s := ToHex(p, b);
for i := 1 to Length(s) do
if s[i] <> Chr(32) then
Result := Result + Convert[s[i]]
else
Result := Result + Chr(32);
end;

{测试一}
procedure TForm1.Button1Click(Sender: TObject);
var
num: Integer;
begin
Randomize;
num := Random(MaxInt);
ShowMessage(IntToStr(num) + #10#13#10#13 +
ToHex(@num, 4) + #10#13#10#13 +
ToBin(@num, 4));
end;

{测试二}
procedure TForm1.Button2Click(Sender: TObject);
var
str: string;
begin
str := 'Delphi 2010';
ShowMessage(str + #10#13#10#13 +
ToHex(@str[1], Length(str)*SizeOf(str[1])) + #10#13#10#13 +
ToBin(@str[1], Length(str)*SizeOf(str[1])));
end;

end.
--------------------------------------------------------------------------------

重写:
--------------------------------------------------------------------------------


function ToBin2(p: PByteArray; b: Integer): string;
var
i,j: Integer;
begin
Result := StringOfChar('0', b * 8);
for i := 0 to b - 1 do for j := 0 to 7 do
if Odd(p^[b-1-i] shr j) then Result[i*8 + 8 - j] := '1';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
f: Single;
str: string;
begin
f := -31.4;
str := ToBin2(@f, SizeOf(f));
Memo1.Lines.Add(str);
end;

相关阅读 >>

Delphi webbrowser 自动登录

Delphi webbrowser添加到收藏夹

Delphi utf-8

Delphi 取到系统临时文件夹路径

Delphi xe 10.2.1 fmx平台 在图片上写字方法

Delphi indy smtp 发送邮件

Delphi xe 中的字符串生成哈希值(md5 / sha-1 / jenkins)

Delphi点击网页弹出的alert对话框的确定按钮

Delphi 关闭显示器

Delphi取得桌面工作区域的大小

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



打赏

取消

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

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

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

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

评论

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