[fpc-pascal] Get TMethod from function reference
Michael Van Canneyt
michael at freepascal.org
Thu Sep 8 17:09:35 CEST 2022
On Thu, 8 Sep 2022, Hairy Pixels via fpc-pascal wrote:
> A function reference can call a class method but can you get the TMethod data from function references? It was possible with “is object” to cast to TMethod but that doesn’t seem to be possible with references.
>
> =========
>
> type
> TMyClass = class
> constructor Create;
> procedure DoThis;
> end;
>
> constructor TMyClass.Create;
> var
> proc: reference to procedure;
> begin
> proc := @DoThis;
> writeln(Assigned(PMethod(proc)^.data)); // FALSE
> end;
To me it seems logical that you cannot do this, since a function reference is actually an
interface, and there is no actual object to back it up.
Your function reference could also be a regular procedure (no data at all) or even a local
procedure.
Michael.
More information about the fpc-pascal
mailing list