<div dir="auto"><div><div class="gmail_quote"><div dir="ltr">Am Di., 4. Dez. 2018, 08:00 hat Ryan Joseph <<a href="mailto:ryan@thealchemistguild.com">ryan@thealchemistguild.com</a>> geschrieben:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
> On Dec 4, 2018, at 1:52 PM, Sven Barth via fpc-pascal <<a href="mailto:fpc-pascal@lists.freepascal.org" target="_blank" rel="noreferrer">fpc-pascal@lists.freepascal.org</a>> wrote:<br>
> <br>
> The type of "Self" inside a object is always the same no matter if it's allocated on the stack or the heap. <br>
<br>
Then there’s now way to do a free method like I showed?<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Correct. </div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
> <br>
> 2) Is there any TObject support in objects? I know there is a VMT table for objects but I’m not sure if it’s structure is public in the RTL. <br>
> <br>
> class function TMyObject.ClassName:string;<br>
> begin<br>
>   result := PVmt(self)^.vClassName^;<br>
> end;<br>
> <br>
> Objects don't have TObject-like functionality. There is a VMT record, but that is only available if there is at least one virtual method. <br>
<br>
I got a crash on that code but maybe it’s because of “self” or is the VMT table for objects not “VMT” from the RTL?<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">The VMT for objects is currently only available locally inside the Objects unit (search for TVMT there). </div><div dir="auto">There is a bug report however to publish it... Though even then it is much less powerful than a class - there's a reason Borland reinvented the wheel there. </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"></blockquote></div></div></div>