unit uutlAlgorithm; {$mode objfpc}{$H+} interface uses Classes, SysUtils; function Supports(const aInstance: TObject; const aClass: TClass; out aObj): Boolean; overload; implementation //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function Supports(const aInstance: TObject; const aClass: TClass; out aObj): Boolean; begin result := Assigned(aInstance) and aInstance.InheritsFrom(aClass); if result then TObject(aObj) := aInstance else TObject(aObj) := nil; end; end.