I'm in the process of converting an old Delphi 5 VCL application to Delphi 11 FMX. Yeah, I have Delphi 12 but I'm waiting for the first bug release before I start using it. Well, this morning I learned a valuable lesson. A lesson which stopped me dead in my tracks.
There's nothing stopping you from creating an already existing type!
I was making some refactoring changes to my code. I didn't realize I was about to make a huge mistake. I went plodding ahead pleased with the progress I was making and admiring the beautiful, refactored code I was creating. When boom... I renamed a type that stepped on a type already inside the System.UITypes unit.
There's nothing to stop you from creating an already existing type. Of course I didn't use the preview changes function. I just hit go!
I had defined my own enumerated type called TMyImageIndex. I decided to just simply call it TImageIndex. So, that's what I did using Refactor > Rename type TMyImageIndex CTRL+SHIFT+E
I knew I messed up when I saw way too much code show up in the results panel.
How dare Embarcadero define a type called TImageIndex
WTF. If it already existed the IDE should have prevented me or at least warned me. How dare Embarcadero define a type called TImageIndex.
type //TImageIndex = (iiAdd = 2, iiUpdate = 3);) TZwImageIndex = (iiAdd = 2, iiUpdate = 3);) const ZW_WIDTH_COLUMN_GLYPH = 20; ZW_WIDTH_COLUMN_DATE = 90; ZW_WIDTH_COLUMN_AMOUNT = 74
It took me about 30 minutes, but I was able to get the original code back in place, And working.
So going forward I have created my own unique prefix of TZw (Zw = ZilchWorks). Going forward I will preface all Types and Constants.
Enjoy!
Semper Fi
Gunny Mike
https://zilchworks.com