No, if all your types are classes descending from the same root you can do it is like this:
type TBaseType = class; procedure somemethod(); end; TExtendedType = class(TBaseType); TBaseTypeClass = class of TBaseType; procedure (value: TBaseType; type_: TBaseTypeClass) begin value := type_.Create(); value.somemethod(); end; And you can call your procedure as: proc(somevar, TExtendedType); For other types you need to use generics. -- Felipe Monteiro de Carvalho _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal