In Delphi, there is no other way of declaring a local variable. Therefore, even the manuals recommend code like this:
WITH MyObject.Create DO BEGIN
My old Delphi manuals (D5 - maybe even D7 pdf's?) clearly state that, using WITH dereferencing makes code faster. I have it on good authority that this wasn't true anymore even in D5's time. The compiler optimizes dereferencing.
Used correctly (assuming CodeGear would finally fix it) it has the potential to make debugging much easier:
By adopting a generic naming convention, you can keep variables like Index, Count, Offset etc. in your watch window and they would display the correct value whenever you enter a WITH block.
As things are now, I need to (MANUALLY!!!) fully dereference every variable I want to watch! Instead of being a potential help, this is a royal pain in the butt.
The old DOS debuggers issued an error message stating the cannot display this variable, or words to that effect. Delphi instead goes to the root, finds a variable of the same name and displays that value. VERY, VERY WRONG!
This is the very minimum that urgently needs to be fixed in Delphi.