小编soa*_*oar的帖子

Delphi自指针使用

我需要在这个实例中获取指向我的类实例的指针.我不能直接使用"Self",我需要商店指针以备将来使用.我尝试了下一个代码:

type
    TTest = class(TObject)
    public
        class function getClassPointer: Pointer;
        function getSelfPointer: Pointer;
    end;

class function TTest.getClassPointer: Pointer;
begin
    Result := Pointer(Self);
end;

function TTest.getSelfPointer: Pointer;
begin
    Result := Pointer(Self);
end;
Run Code Online (Sandbox Code Playgroud)

结果都错了 - 这段代码:

test := TTest.Create;
Writeln('Actual object address: ', IntToHex(Integer(@test), 8));
Writeln('Class "Self" value: ', IntToHex(Integer(test.getClassPointer()), 8));
Writeln('Object "Self" value: ', IntToHex(Integer(test.getSelfPointer()), 8));
Run Code Online (Sandbox Code Playgroud)

收益:

Actual object address:    00416E6C
Class "Self" value:       0040E55C
Object "Self" value:      01EE0D10
Run Code Online (Sandbox Code Playgroud)

请帮助我理解,这个"自我"的价值是什么?"Self"是指向此类实例的指针吗?如何将此指针用于此对象之外的未来使用?如何从这个值获得正确的指针?

delphi pointers self

5
推荐指数
1
解决办法
6392
查看次数

标签 统计

delphi ×1

pointers ×1

self ×1