易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi 类与对象内存结构浅析(附件2)

*类的公开属性(代码)
示例:访问类的published属性
说明:vmtFieldTable(Published Field表)指向Published Field表有序排列,只存储当前类的PublishedField表,得到父类的Published Field表需要往上遍历。
注意:只有类型是类或接口的数据成员才可定义为published的访问级别
代码:
type
    TMyObject = class(TObject)
    private
        FField1: Integer;
        FField2: string;
        FField3: array[0..2] of Integer;
    published
        Button1: TButton;
        Memo1: TMemo;
        Label1: TLabel;
    end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
    AObject: TMyObject;
    //---
    procedure _ShowDMTInfo(ALines: TStrings; AClass: TClass);
    var
        AClassAddress,AFTAddress: Integer;
        AFieldCount,AFieldIndex,AFieldOffset,AFieldNameLen: Integer;
        APos,i: Integer;
        AFieldName: ShortString;
    begin
        AClassAddress := Integer(AClass);
        with ALines do
        begin
            Add(Format('类名: %s ', [AClass.ClassName]));
            //---
            AFTAddress := Integer(PPointer(AClassAddress + vmtFieldTable)^);
            if AFTAddress = 0 then
       &n


相关文档:

怎样在Delphi中调用EXE文件


//加一下按钮,加一个对话框就OK啦
procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
begin
if OpenDialog1.Execute then
begin
s := OpenDialog1.FileName;
WinExec( PChar(s), SW_NORMAL);
end;
end;

----------------------- ......

DELPHI用FindWindow、FindWindowEx 查找窗口

FindWindow(
lpClassName, {窗口的类名}
lpWindowName: PChar {窗口的标题}
): HWND; {返回窗口的句柄; 失败返回 0}
//FindWindowEx 比 FindWindow 多出两个句柄参数:
FindWindowEx(
Parent: HWND; {要查找子窗口的父窗口句柄}
Child: HWND; {子窗口句柄}
ClassName: PChar ......

Delphi 类与对象内存结构浅析(上)


参考资料
李战.《悟透delphi》,第1章“DELPHI的原子世界”
 “探索Delphi类与对象的内存结构”
基本知识
动态内存与静态内存
当程序运行时,系统首先将所有数据装载入内存,完成初始化,然后从入口地址开始执行代码。
程序装载后即存在于内存空间中的数据我们称之为静态内存,运行过程中 ......

Delphi 类与对象内存结构浅析(附件1)

附件资料
*类的内存信息(代码)
示例:获取类信息
说明:比对通过类地址以及通过类方法获取信息的效果。
代码:
type
    TMyObject = class(TObject)
    private
        FData: Integer;
    protected
    ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号