Generics object and assignment overloading

Generics object and assignment overloading


  TMyObject = class

    property Value: T;


  TIntObject = TMyObject;


  obj: TIntObject;

  int: integer;


  obj := TIntObject.Create;

  obj := 4;  // assigns 4 to obj.value

  int := obj; // resulting in Int being 4


Is it possible to do operator overloads which allows the assignments as outlined above? I know this is not housebroken code – but it would help immensely for code simplicity in the specific context that I want to use it in. If possible, what are the pitfalls? (instances will not be persistent or streamed).

Call for Community help: Sorting priorities

Call for Community help: Sorting priorities

Given that we are a large group of people, doing very varied work – lets get the gist of where we would like to see EMBT have the technical focus for the coming versions by doing a poll.

We do the poll with a proper anonymous polling tool and publish the  results, so that noone feel they have to give up their privacy or vote with the party line. Suggestions for a good, reliable polling tool that can’t be manipulated, are welcomed.

I request that we stay away from SKU definitions, prices, upgrade policies, and everything else that reeks of pointy haired boss.

This is where I need the community spirit!  

We should try to keep the poll relatively short – so we need to limit the options.

My suggestions to get the discussion going:

1. My primary Delphi use

ISV, Corporate dev, Contractor, Hobbyist, …?

2. My current SKU

AppMethod, Starter, Professional, Enterprise, Architect 

3. What do you write in Delphi?

Categories: Components, Libraries, Utility UI, CRUD UI, Data crunching, Reporting, Games, Graphics, Web, …?  Can we manage to keep this list down to a managable number?

4. Where do you use Delphi?

Platforms: Win32, Win64, Android, iOS, OSX

5. What is your biggest challenge?

IDE Stability, Debugger Stability, Compiled Code Quality, Library Quality, Lack of API support, Lack of platform support?

6-n. What do you want in the next Delphi versions

Here I think we need to create sub categories, such perhaps broken down by the previous options. Is it possible to make a poll that lets the votee prioritize the options?

Should some of these sections go? What else should be in there?  Let’s spend a couple of weeks refining this, before we create the poll and spread it as widely as possible. Note that I am not a poll making specialist – so keeping it sane will require the effort of the group.

#LightACandleAndBurnDownTheHouse  or some other inspirational quote here.

Castalia’s block highlighting doesn’t treat blocks nice if the indentation doesn’t follow the standard alignments.

Castalia’s block highlighting doesn’t treat blocks nice if the indentation doesn’t follow the standard alignments. Very annoying for us that have different habits.

It could have worked if it didn’t insist on starting at the position of the begin/try, but rather on the first non whitespace at the line that contains the begin or try.


XE8 Findings

XE8 Findings

Found some minor tweaks in XE8. Will add to this post as I find more.

Breaking changes in FireDAC.UI.Intf

TFDScriptOutputKind used to be TFDScriptOuputKind

I actually QPd this, so blame me 😛

Breaking changes in FireDAC.comp.client

TFDConnectionLoginEvent = procedure (AConnection: TFDCustomConnection; AParams: TFDConnectionDefParams) of object;

used to be

TFDConnectionLoginEvent = procedure (AConnection: TFDCustomConnection; const AConnectionDef: IFDStanConnectionDef);

TFDErrorEvent = procedure (ASender, AInitiator: TObject; var AException: Exception) of object;

used to be

TFDErrorEvent = procedure (ASender: TObject; const AInitiator: IFDStanObject; var AException: Exception) of object;

TFDConnectionRecoverEvent = procedure (ASender, AInitiator: TObject; AException: Exception; var AAction: TFDPhysConnectionRecoverAction) of object;

used to be

TFDConnectionRecoverEvent = procedure (ASender: TObject; const AInitiator: IFDStanObject; AException: Exception; var AAction: TFDPhysConnectionRecoverAction) of object;

This one as a bit annoying as I actually was accessing the IFDStanObject.Name property.  I guess .classname will have to do.