tw26288.pp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. unit tw26288;
  2. {$mode objfpc}{$h+}
  3. interface
  4. uses
  5. Classes, SysUtils;
  6. type
  7. { TGenVector }
  8. generic TGenVector<_TItem_> = class
  9. public type
  10. TItemToString = function (const Item: _TItem_) : String of object;
  11. strict private
  12. fOnItemToString: TItemToString;
  13. procedure SetOnItemToString(AValue: TItemToString);
  14. public
  15. constructor Create;
  16. function DefaultItemToString(const Item: _TItem_) : String; virtual;
  17. property OnItemToString : TItemToString read fOnItemToString
  18. write SetOnItemToString;
  19. end;
  20. implementation
  21. {--- TGenVector.Create ---}
  22. constructor TGenVector.Create;
  23. begin
  24. SetOnItemToString(nil);
  25. end;
  26. {--- TGenVector.DefaultItemToString ---}
  27. function TGenVector.DefaultItemToString(const Item: _TItem_): String;
  28. begin
  29. raise Exception.Create('Method not redefined');
  30. Result := '';
  31. end;
  32. {--- TGenVector.SetOnItemToString ---}
  33. procedure TGenVector.SetOnItemToString(AValue: TItemToString);
  34. begin
  35. if AValue = nil then
  36. fOnItemToString := @DefaultItemToString
  37. else
  38. fOnItemToString := AValue;
  39. end;
  40. end.