[fpc-pascal] get class of procedure variable

Michael Van Canneyt michael at freepascal.org
Fri May 29 09:18:06 CEST 2020

On Fri, 29 May 2020, Michael Van Canneyt wrote:

> On Fri, 29 May 2020, Ryan Joseph via fpc-pascal wrote:
>> In the example below "callback" is assigned to a method of "obj", but is it 
> possible to get the class back from the variable? In the pseudo code I would 
> expect .GetClass to return "obj". I think "of object" must be a record which 
> keep both the class and method pointer but I don't know how to access it.
>>  type TCallback = procedure of object;
>>  var
>>    callback: TCallback;
>>    obj: TObject;
>>  begin
>>    callback := obj.SomeMethod;
>>    // get the class which callback is assigned to
>>    if callback.GetClass = XXX then
> I think what you're looking for is:
> if TMethod(CallBack).Data=XXX then

Small addendum, if you're looking for the class (i.e. the type) then that
would be:

   if TObject(TMethod(CallBack).Data).Classtype=XXX then

TMethod is part of the system unit.


More information about the fpc-pascal mailing list