Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 134777
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T06:40:30+00:00 2026-05-11T06:40:30+00:00

I am trying to create a generic list class for use with tiOPF (an

  • 0

I am trying to create a generic list class for use with tiOPF (an Object Persistence Framework for delphi @ http://www.tiopf.com). Specifically I am trying to take an existing generic class (TtiObjectList) and make a generic version that uses TtiObject descenants.

I have limited scope for altering the base classes as they need to compile under D7 – D2009 and Free Pascal. I need to descend from TtiObjectList to keep the existing persistence mechanisms working.

// base class   type     TtiObjectList = class(TtiObject) ...   protected     function GetItems(i: integer): TtiObject; virtual;     procedure SetItems(i: integer; const AValue: TtiObject); virtual;   ...   public     function Add(const AObject : TtiObject): integer; overload; virtual;   ...   end;   

My class is defined as follows:

TtiGenericObjectList<T: TtiObject> = class(TtiObjectList)   protected     function GetItems(i:integer): T; reintroduce;     procedure SetItems(i:integer; const Value: T); reintroduce;   public     function Add(const AObject: T): integer; reintroduce;     property Items[i:integer]: T read GetItems write SetItems; default;   end;  implementation  { TtiGenericObjectList<T> }  function TtiGenericObjectList<T>.Add(const AObject: T): integer;   var obj: TtiObject;   begin     obj:= TtiObject(AObject); /// Invalid typecast   result:= inherited Add(obj);   end;    // alternate add, also fails   function TtiGenericObjectList<T>.Add(const AObject: T): integer;   begin     result:= inherited Add(AObject); /// **There is no overloaded version**  /// **of 'Add' that can be called with these arguments**   end;    function TtiGenericObjectList<T>.GetItems(i: integer): T;   begin     result:= T(inherited GetItems(i)); /// **Invalid typecast  ** end;    procedure TtiGenericObjectList<T>.SetItems(i: integer; const Value: T);   begin     inherited SetItems(i, Value);   end;   

The problem I have is that delphi is not seeing T as a TtiObject descendant. I am getting invalid typecast errors when I do something like:

function TtiGenericObjectList<T>.Add(const AObject: T): integer;   var obj: TtiObject;   begin     obj:= TtiObject(AObject); /// **Invalid typecast***   result:= inherited Add(obj);   end;   

If I don’t do a type cast, then I get overload errors instead as shown in the listing above.

Any ideas where I am going wrong?

Sean

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T06:40:30+00:00Added an answer on May 11, 2026 at 6:40 am

    It looks like the problem is not me, but the compiler :).

    In the end, I have hacked around it using the following methods

    class function TtiGenericObjectList<T>.GenericAsObject(const Value): TObject; begin   Result := TObject(Value); end;  class function TtiGenericObjectList<T>.ObjectAsGeneric(const Value): T; begin   Result := T(Value); end; 

    used as follows

    function TtiGenericObjectList<T>.Add(const AObject: T): integer; var obj: TtiObject; begin   obj:= TtiObject(GenericAsObject(AObject));   result:= inherited Add(obj);   // replaces the following which gets overload errors //   result:= inherited Add(TtiObject(AObject)); end; 

    and

    function TtiGenericObjectList<T>.GetItems(i: integer): T; var obj: TtiObject; begin   obj:= inherited GetItems(i);   result:= ObjectAsGeneric(obj);   // replaces the following which gets 'Invalid typecast' errors   // result:= inherited Add(AObject); end; 

    I will clean these up a bit and use them till the compiler gets fixed.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am trying to create a generic list box in OpenGl ES (for the
I'm trying to create a UserControl that inherits from a generic class. It does
I'm trying to create a generic graphics export tool which works by implementing the
Trying to create a user account in a test. But getting a Object reference
Trying to create a list to return some JSON data to a view. Following
I am trying create a WCF service that leverages the WPF MediaPlayer on the
Trying to create a QtRuby application, I get the following error: /usr/lib64/ruby/site_ruby/1.8/Qt/qtruby4.rb:2144: [BUG] Segmentation
Trying to create my first iPhone app that would play back audio. When I
Trying to create several layers of folders at once C:\pie\applepie\recipies\ without using several different
Trying to create a small monitor application that displays current internet usage as percentage

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.