views:

14792

answers:

118

Soon Delphi 2010 "Weaver" will enter in beta. (See http://www.embarcadero.com/products/beta_programs.php)

Which would be your most wanted features for the next release of Delphi?

Mine (from top of the head):

  • tooling for synchronizing the representations of DB schema (aka. DB metadata) in code and in database
  • language enhancements:
    • CASE on non-ordinal types
    • lazy evaluation
    • mixins
    • AOP (aspect oriented programming)
  • VCL enhancements:
    • DB enhancements (TDataSet, TClientDataSet - faster, more feature rich)
    • OPF/ORM on native side
    • (more) containers, classes (using generics)
  • IDE enhancements:
    • Runtime Object Inspector using the already registered editors to allow WYSWYG debugging of the objects/classes (and generally a better debugger)
    • Code management tools
    • Refactoring assistants
    • Find unused code (ok, here we need support from linker)
  • 64-bit compiler

...and many many more :-)

Yours?

UPDATE: There are some sneak previews at http://wings-of-wind.com See for yourself.

+11  A: 

Garbage collection.

Luke CK
If you just can't handle the oh-so-onerous task of cleaning up your own messes, look at cc.codegear.com/item/21646 , but please, *please* do not bloat up my programs with such a hideous, fundamentally broken misfeature just because some other programmers aren't competent enough to code without one!
Mason Wheeler
On principle I'm with you. However IIRC GC is sometimes just *faster* than managing memory manually.
Ulrich Gerhardt
Yeah, for some edge cases, but it's not common. Or you can get that sort of performance in the general case, at the price of allocating about 4x more memory then you'd have to otherwise. You lose either way.
Mason Wheeler
-1 for me I'm afraid - I'd rather see the effort go into making the IDE more responsive, improving the help files, updating examples and demos, fixing the QC bugs etc. I just don't see GC as that big a deal in Delphi.
robsoft
While GC would be nice as an option in Delphi, I am afraid that programmers get too lazy and understand even less how memory management works. Its bad enough as it is. Also I am afraid that once there is this option, it would become the only memory management available very fast.
dummzeuch
Just say NO to GC
Mick
IIRC, Nick said that they look to add GC as an *option* to Delphi native compiler. Imho, this is the right path. Kudos to CodeGear guys!
Garbage collection is not about laziness. While I wouldn't want mandatory gc in delphi, an optional gc would be great. cc.codegear.com/item/21646 (written by Barry Kelly who is now on the delphi compiler team) doesn't work on later versions of delphi.
SeanX
There are already two ways of managing clean-up in Delphi: explicit free for objects, automatic reference counting for interfaces. Do we really need a third one to complicate things even more?
Wim Coenen
+4  A: 

Improved class modeling tool.

Luke CK
+30  A: 

Multi-core support.

Luke CK
What exactly does that mean? We've had multithreading since Delphi 2. Can you be a bit more specific as to what needs to be improved here?
Mason Wheeler
Multithread has been around for a while, but until multi-core it was never truly tested for concurrency. Older Delphi's threads were known to behave badly on multicore environment when you make heavy use of threads like ISAPI.
eed3si9n
"Older Delphi's threads were known to behave badly"?? Please be more specific. So the "Delphi thread" (which is an OS, thread btw) is what behaves badly or is it what happened *in* the thread (not Delphi's code) that behaved badly?
Allen Bauer
+49  A: 

64 bit compiler.

Luke CK
I've got tons of heavy duty 32bit Delphi code running on 64bit windows. No problems whatsoever. I'm aware of technical implications like being able to theoretically address 1TB of RAM instead of a couple of GB, but would that really be the neatest new feature for D2010?
Wouter van Nifterick
Yes, in the enterprise, and also for high-end gaming. I work for a company that makes an app that manages immense (10s of gigs in some cases) databases in very heavy-traffic environments. Some of our clients are asking for 64-bit, because they're running into the 32-bit limit.
Mason Wheeler
As for gaming, well... that should be obvious to anyone who's into 3D games. Even with PAE, 32-bit windows only gives you 3.5 GB of addressable RAM, and a high-end video card will take a bite out of that. Some of the latest and greatest games start to bog down with "only" 4 GB to play with...
Mason Wheeler
I work with databases with 10s of gigs every day. Everything works perfectly fine without needing to address more than 4GB in applications that make use of that data.For gaming.. well.. yeah.. you're probably right.. but how many games are actually produced with Delphi?
Wouter van Nifterick
It's clear that 64bit platforms have advantages, no doubt about that. I'm just a bit boggled by the fact that this seems to be on top of the list for Delphi developers.
Wouter van Nifterick
Yeah, there's not too many games done in Delphi at the moment. I'm working to improve that, though... ;)
Mason Wheeler
I agree that not everyone needs 64 it support at the moment. The software our team maintains is used by electrical engineers to manage the power grid. In our case there are huge amounts of data to work with. We haven't hit the 32 bit limit yet but it will happen soon.
Luke CK
Another reason for 64bit is cases of injecting DLL to other process.For example, hooks. 32bit DLL can be only injected in 32bit process. If you want to have your hooks in all processes - you need to write 2 DLLs.
Alexander
Virtual memory space (maybe more than physical memory).Access to system APIs when running on a 64bit OS (IFilter...).Guaranteed SSE2 availability.Shell extensions.
Eric Grange
+36  A: 

Cross platform compilation.

Luke CK
What does that mean, though? Architecture <> x86? Linux and Mac OS X, but x86 / x64 only? Or a VCL that doesn't become unusable once DPI <> 96, or a different font is chosen? Please let's not have another disaster like Kylix, only this time on the Mac.
mghie
See http://edn.embarcadero.com/article/39174
Yes, I know this article. But there is already an answer about a 64 bit compiler, and anyway, this is nothing but (long overdue) catching up with the development of the sole platform Delphi supports (Windows). So what about *cross* *platform* *development*?
mghie
Cross platform compilation is here today with Free Pascal, for those who need it. It's the libraries where Delphi is miles ahead, but those are firmly tied to Windows. I'll be convinced the day I see a native Fat Binary Delphi program for Mac OS X, that looks and feels like a proper Mac app.
mghie
It's not just the libraries. How many years now have the Lazarus folks been telling us that dynamic loading will be here RSN? No frames, no Packages no form inheritance... sure, you can compile cross-platform, but there's not much you actually *can* compile! (Oh, and the debugger sucks, too.)
Mason Wheeler
+47  A: 

A working help file.

Luke CK
Not just a working help file but a useable help system. See the help plugin done by a German Delphi programmer, that uses Delphi's start page to display the help. Very fast, very convenient. (I just can't remember the name of this plugin.)
dummzeuch
The name of the plugin is "Help-Booster". It is sweet. http://www.delphipraxis.net/helpbooster.php?lng=en
Mick
Thanks. I didn't know about that one.
Luke CK
Does Help Booster work for D2009? Just tells me I have no IDE installed.
Gerard
you may also want to use http://ref.dp200x.de
Joe Meyer
+13  A: 

Lambda expressions. (nearly there with anonymous methods)

Tim Jarvis
But why the need for all that typing? It really ruins anonymous methods for me..
Vegar
All that typing? What on earth do you mean?A typical Lamda (C# style)..someList.Select(o => string.Format("{0} {1}",o.firstName, o.lastName);This simple line of code in this case reads a List of objects, possibly a cust object for example and returns a list of strings containing the First and Last names. Simple, elegant readable and maintainable. Ticks all the boxes as far as I am concerned.
Tim Jarvis
+10  A: 

We can post them to user voice: delphi.uservoice.com Might make it easier to track votes long term.

Jim McKeeth
+1  A: 

Expressions as property getters and setters:

property SumAB: Integer read FA + FB;
property FooNumber: Integer read Foo.Number write Foo.Number;

Would be great.

Gamecat
Aren't you a bit confused about sums and products here? :D
Smasher
Lol, at least someone is awake today ;-).
Gamecat
Sum feature is odd, second one exists for records (D2006)
DiGi
It isn't that odd. Imagine you derive a type-safe list (pre-generics style) and want to override Items:property Items[Index: Integer]: TDerivedItemType read TDerivedItemType(inherited Items[Index]);
Ulrich Gerhardt
I think a better answer would be a Typecast directive. Property Items[Index : Integer] : tDerivedItem; Typecast;. No code is emitted, you just get to use the old methods with the new type--it's up to you to make sure the cast is appropriate.
Loren Pechtel
+3  A: 

Managed records, so that I can have constructors and destructors for stack-based variables without fiddling around with try ... finally, and without the overhead that using interfaces for this purpose has.

mghie
Forgive my ignorance, but how is this different from the current implementation of records, which are stack-based, can have constructors, and don't need try blocks or interfaces to clean up? About the only thing in your list that current records don't have is destructors.
Mason Wheeler
@Mason: But that's exactly the point - I want RAII, so the destructor is crucial. For stuff like locking / unlocking a lock object, setting and restoring busy cursors and stuff like that I currently use interfaces - that's much more heavy-weight than needed. Managed records would be perfect.
mghie
Meh. While I can see where you're coming from in this specific case, full-blown RAII is an ugly hack introduced to work around a few specific defects in the design of the C++ language, and it's rarely seen outside C++ for a good reason. I'd rather not see some of its uglier patterns in Delphi.
Mason Wheeler
I somehow doubt that your opinion is widely shared. Let's just agree to disagree. And: A few butt-ugly patterns in Delphi (see for example http://stackoverflow.com/questions/398137) are necessary only because Delphi can not have objects on the stack, only references to them.
mghie
I've seen that one. There are some good answers to it. The example in the original question was really ugly, but the answers tended not to be. Yours was the best, IMO.
Mason Wheeler
+11  A: 

A true ternary operator, which (when short-circuit boolean evaluation is active) does only evaluate one of the expressions.

mghie
+1  A: 

A rooted type system, to make Generics more powerful.

+1  A: 

"Beta". Doesn't that mean that no new feature will be added. Only dropping of features. Or have I misunderstood the word "Beta". (rhetorical question)

Andreas Hausladen
+27  A: 

Support for regular expressions.

PetriW
And yes, I know there is third party stuff for this! :)
PetriW
+15  A: 

Object friendly databinding and desingtime interaction.

Current databinding approach belongs to BDE times! We don't even have properly working DB independent dataset! That old architecture is discouraging programmers to develop modern layered architectures and OPF/ORM stuff. I mean seperation of Gui and bussines objects. Though this is pointless if you are happy to use TDataset descendants as bussiness objects! Some delphi programmers still think they can provide layering with just using remoting facilities (RemObjects, Datasnap) and codegear invests on Datasnap and Dbexpress! Collective delirium!

For Codegear : No layering := No enterprise customers!

For Delphi programmers : No layering := Time for retirement!

AhmetC
I'm currently avaluating Rem Objects SDK and Data Abstract because of too much disappointments with Datasnap. What's bad with RO, i thought it permit the layering you are talking about, can you explain please ?
Fred
I haven't ever done coding with RO DataAbstract but i read some articles and examined its samples. So my thoughts won't be that objective. As far as i see It follows Delphi's RAD paradigm. It mostly behaves like a case tool for generating abstract schemas(abstracted from DB connection) for ubiquity.
AhmetC
And Schemas defines column mappings for clientside datasets. Underlying remoting infrastructure is RO SDK. Actually it looks like a quality stuff, but it mostly intended for solving technical problems like remoting, network scalabliity and multi-Rdmbs support.
AhmetC
It provides nothing new in software engineering aspect. Current enterprise development trends advise developers to use domain objects which modelled as Classes in modern languages. Not with runtime instantiated datasets.
AhmetC
OPF-ORM libraries stand for reconcile impedance mismatch between RDBMS and Classes in those trends. And Classes are easy for unit testing of abstract bussines logic. With instantiated datasets(schema based or not) unit testing is tricky and much more like acceptance tests.
AhmetC
Thanks Ahmet for your explanations. Note than DataAbstract make the possibility to use strongly typed data tables with business rules. So you manipulate your data like an object as with an opf/orm (not totally the same, i agree)
Fred
+10  A: 

Official support for the firebird database would be nice.

Re0sless
This was added in Weaver.
David Dean - Embarcadero
+20  A: 

Stable faster IDE with enhanced refactoring support.

idursun
+6  A: 
  • A better debugger.
  • A much improved Help file. D7 help file was a nice one. The current one is a pain.
  • A search box at the top of the VCL toolbar so you can type the name of a component and filter the palette.
Averroes
There is already a search box that filters the component palette.
Andreas Hausladen
Ops! Not in my Delphi 2006, but I have seen a screenshot of the 2009 edition and you are right. Thanks.
Averroes
There's no box in BDS2006 but you can search incrementally. Try Ctrl-Alt-P, followd by e.g. 'butt' + Return ==> this creates a button.
Ulrich Gerhardt
Nice! Thanks, Ulrich :)
Averroes
+10  A: 

Beg/borrow/steal CodeRush from DevExpress and make it part of the standard IDE. Code templates are a huge step, but I am no where as productive as I was using D6+CodeRush.

One more thing, a JSON Databinding Wizard that turn a JSON file/config into a binding class so I can..

Customer := NewCustomer();
Customer.FirstName := 'Bob';
//set other fields/complex collections
StringToSendToJsonWebService := Customer.ToJson();
KevinRF
Check out CNWizards. Not the same, but a good step in the right direction. And free and open-source: http://www.cnpack.org/index.php?lang=en
Mick
+1 for CNWizards, and it even plays well with GExperts also installed.
skamradt
That's what I'm talking about. Out of the box productivity. Not too crazy about the 'out of the box' code editor colors..but I can work with that :)
KevinRF
+1  A: 

much more enhanced IDE enviroment. Mopre autocreating and autoupdating classmember functions and procedures and variables (instead of) moving up and down whne adding new class functions etc. There are a lot more to do on intuitive refactoring.

Tool
+34  A: 

Source code formatter, SVN integration

Anders Pedersen
Source code formatter is present in Weaver.
David Dean - Embarcadero
+2  A: 

Better intellisense/auto-complete/(whatever Delphi calls it).

Getting class members is very useful, but autocompletion of local variables / enums / etc. would be very welcome.

Mark Pim
Uhm, it does that already. What makes you think it doesn't?
Nick Hodges
+58  A: 

Stable IDE

I remember working in Delphi 7 when it was still Borland Delphi. It was a great little IDE, very reliable, and still one of the fastest compilers I've ever used (almost scary fast!).

After the IDE was sold the Codegear, the company worked on packing the IDE with bulletpoint features. When me and the other Delphi developers on my dev team started on Delphi 2007, we seriously lost hours of work everyday because the IDE was so buggy, and it took so long to restart. There were days when the IDE would crash every 10 minutes, and it constantly leaked memory (even when it was sitting idle!) Delphi 2007 crashed with enthusiasm, and I'm convinced Delphi 2007 would have put sent Delphi to its death if it weren't for the one killer feature, CodeRush (and even that was buggy).

Delphi 2009 was an improvement, although it wasn't backward compatible with our Delphi 2007 projects. It didn't crash as often (not more than twice a day), but still was substantially less stable than Visual Studio, Eclipse, IntelliJ, or any other IDE I've ever used.

More than anything, I'd give up a few features in this release just to have the IDE fumigated for bugs and shoot for rock solid stability.

Juliet
I tried using Delphi 7 recently and I had a horrendous amount of problems. I also remember Delphi 7 as stable, but today it seems D2007/D2009 work much better, at least for me.
PetriW
I don't have huge stability issues with D2007, but D5 and D7 were certainly much more responsive. I understand it's doing a lot 'more' these days, but I'd like to see some effort put into making the IDE a little less 'treacly', especially on bigger projects.
robsoft
"Not more than twice a day"? D2009 is rock-solid for me. The only time I've ever managed to crash it was when I placed a badly-written component on a form. It's got its quirks, and some of them are annoying, but I've got no complaints whatsoever on the actual stability of the IDE.
Mason Wheeler
I still use Delphi 7 at work, and stable is not a description I would apply to it.
Blorgbeard
My exprence with D2007 is similar to Mason's. Th only time the IDE crashes is when working with buggy 3rd party components. D2007 is definitely less responsive than D7 but for me the benefits outweigh the slower load times.
Luke CK
D2005 was a catastrophe, but our experience with D2007 is quite good, even with some 3rd party components. There are so many possible configuration explanations, that it is probably fruitless to try to explain these different experiences.
JosephStyons
I'm using Delphi 2010 since a few weeks now and it never gave me any problem. IMHO most of the crashing problems come from 3rd party products anyway.
Joe Meyer
It really depends on what you do and install. And since the IDE is pluggable, of course 3rd party designtime libs and utils can cause trouble. For me the IDE is rock stable, but I use it fairly straight. I can remember when I was dabbling with activeX applets in D7 that the those dialogues weren't the stablest of things in D7 either.
Marco van de Voort
TOO BAD THE MODERATORS CLOSED THIS NICE TOPIC!!!!!!!
Altar
+5  A: 

A customizable debugger (http://msdn.microsoft.com/de-de/library/zf0e8s14.aspx).

Moritz Beutel
I like it. (And I like it even more when I can read it in my own language!) http://msdn.microsoft.com/en-us/library/zf0e8s14.aspx
Mason Wheeler
+1. There's more nifty features, like the ability to mark sections of code that the debugger should not step into, but always step over - great for ubiquitous and thoroughly debugged helper classes.
mghie
+7  A: 

Improved support for properties. Properties are basically an abstraction that allows an object to appear that it's got a bunch of public data members available for the coder to use, (making an object look like a record, back before records got scope and properties too,) instead of ugly get/set methods for everything like you have to use in C++. Problem is, the abstraction leaks in a few places, but they ought to be pretty easy to plug.

For example, there's no good reason why you should ever be unable to pass a read/write property to a var parameter. If it directly accesses the same field for both read and write access, it's trivial. Otherwise, it could be done easily enough with a small dose of compiler magic. (Allocate a temporary variable on the stack, read, copy the value, pass the copy to the function, retrieve the result and send it to the property's write access.)

Also, whoever created the current implementation of array properties oughtta be taken out and shot. They're written as if all "arrays" are really something else, so you need a get and set method to use them. That's actually been true in my own code a grand total of once. If I have a real array inside my object, I ought to be able to declare read and write access to it directly, just like any other data member:

private
  FMyArray: array[1..10] of TMyObject;
public
  property MyArray: array[1..10] of TMyObject read FMyArray write FMyArray;

Also, it would be really nice if this would compile, just to simplify things a little:

property MyNumber: integer read write FMyNumber;
Mason Wheeler
The problem is that everything you're after here except the last syntax sugar breaks information hiding.
Loren Pechtel
I don't see how. Seems to me it would improve information hiding. Ever try to resize a dynamic array property, for example? It requires mucking around with pointers, or building a special function into the class. (And a different one for each individual dynamic array!)
Mason Wheeler
The problem is you are assuming that it really is an array.
Loren Pechtel
That's usually a safe assumption when you have the class declaration right there in front of you... :P
Mason Wheeler
You mean a property that's a dynamic array? You can't resize it because you can't pass it to SetLength, which you can't do for the same reason you can't pass any other property as a "var" parameter. Has nothing to do with arrays.
Rob Kennedy
It's not a safe assumption because it could be changed in the future. You're exposing implementation details you shouldn't.
Loren Pechtel
You can take that statement a bit too far, you know. "Let's not expose the fact that this property is an integer. It might be changed to a single or an Int64 in the future. Let's hide the information and just call it a *number* property!"
Mason Wheeler
That's silly, of course, but the point isn't: Some information just can't be hidden in order for the user to do their job effectively.
Mason Wheeler
re: passing a r/w property to a var param.This could have the potential to break a lot of code. What if v1 allowed that for properties mapped to fields? Then v2 is released and a getter/setter were added. Any existing code doing that would fail to compile.
Allen Bauer
The whole point of data hiding and abstraction is to allow a framework to evolve and change without breaking the consumers of said framework. Looking too deeply into the implementation details only serves to add crippling coupling.
Allen Bauer
Why would that fail to compile? You'd have to recompile, and the compiler would have to treat it differently under the hood, but the method I mentioned ought to work without changing the code that uses the class. That's the entire point of the idea I described.
Mason Wheeler
+37  A: 

First and foremost, an IDE is a text editor, and a real text editor never blocks. As long as there isn't a dialog box open, there's no reason why you should ever be unable to edit your code. Andreas Hausladen has some tricks that help out a bit in that, but it's still fundamentally the wrong solution. If the IDE needs to do something that's gonna take 30 seconds or so to build CodeInsight data set or do whatever it's doing when I hit F1 for the first time, it ought to do it in a background thread and leave me free to write more code.

Mason Wheeler
+1 - this is what I'm getting at with 'more responsive' - sometimes things get bogged down (generating intellisense/tooltips?) - there's nothing more annoying when you're working than suddenly the IDE goes dead on you for a few seconds. I'd rather they improved this than added garbage collection!
robsoft
+1 - and I don't even know Delphi or Pascal.
Chris Lutz
+5  A: 

Here's a thought, don't add anything new, just catch up on all of the Quality Central issues that need to be addressed.

...hehehe... ;-)
+6  A: 

Two words: Native LINQ.

Mason Wheeler
+2  A: 

Could be stupid but I really miss a TDBLookupLabel component !

Are you biased? Then it's stupid. Do you really need it? Then is not! Imho this means user input.
A: 

Cross platform for server side code. Not interested in another CLX disaster, I just want to be able to run app servers on other platforms.

Optional garbage collection like Objective-C has would also be nice.

Ron Grove
A: 

Field overriding. Imagine the following scenario, based on an issue I ran into while building a sprite-based game engine:

type
  TSpriteEngine = class; //generic 3rd party sprite engine

  TSprite = class(TObject) //generic 3rd party sprite
  protected
    FParent: TSpriteEngine;
    ...
  end;

  TSpriteEngine = class(TObject)
  protected
    FList: array of TSprite;
    ...
  end;

  (And now, in another unit:)

  TGameEngine = class;  //my own sprite engine with extra features

  TGameSprite = class(TSprite)
    ...
  end;

  TGameEngine = class(TSpriteEngine)
    ...
  end;

Now, TGameEngine and TGameSprite have special new functionality that only work with each other, and not with the base types. But the parent/child fields are defined as the base types and can't be changed, which means that any type safety has to be implemented at runtime with is/as checks, and any uses of the parent/child references that need the extra functionality have to be typecasted.

Why not make this valid syntax?

  TGameSprite = class(TSprite)
  protected
    FParent: TGameEngine; override;
    ...
  end;

  TGameEngine = class(TSpriteEngine)
  protected
    FList: array of TGameSprite; override;
    ...
  end;

Adding the override directive to a field declaration would allow you to redefine a field inherited from an ancestor class as a derived type of the original. It would have to meet type safety checks at compile-time, (if you override FObject: X as FObject: Y, it would only compile if "Y is X;",) and the compiler would not create a new data member, but be instructed to treat the existing one as the derived type instead of the base type when using the derived class.

Improved type safety and cleaner code (less spurious typecasts) without having to add a new keyword. I think it would be a good idea. Anyone else like it?

Mason Wheeler
You didn't express this very well which probably accounts for the down-votes. It's obvious you only mean overriding fields which are objects.
Loren Pechtel
Yes. Only object fields (or arrays of objects), and only if the overridden type descends from the original.
Mason Wheeler
+7  A: 

Better (and less complicated) RTTI

knight_killer
According to Nick Hodges, "That is part of the plan." http://blogs.codegear.com/nickhodges/2009/02/04/39200
Mason Wheeler
+2  A: 

My top three feature requests:

  1. ability for Delphi 2010 to use VCL components created by C++ Builder 2010

  2. cross platform server-side binaries (e.g. ISAPI Windows .DLL and Linux .so)

  3. ability to link to C++ Builder .OBJ files, even if it is C++ (not just C), as long as Delphi sticks to using plain C data types in function parameters

+4  A: 

A version number that's actually a number, that the preprocessor can treat as a number. Anyone who's ever had the joy of having to dig through and extend include files when the new version of Delphi suddenly won't compile an old 3rd party library will know exactly what I mean and why it's important.

Mason Wheeler
Add to this simple expressions, for instance {$IFVERSION >= VER200} would go a long way to solving this exact problem.
skamradt
Are you aware of {$IF CompilerVersion > X} ?
Oliver Giesen
I've seen it a time or two. I assume there's a reason it's not used in the include files for any third-party library I've used. What that reason is, though, I don't know...
Mason Wheeler
well, I guess that would be because of the need to support Delphi versions smaller than 2006 (or whenever the $if directive was introduced)...
Oliver Giesen
Oh, it's a recent addition? OK, yeah, that would do it...
Mason Wheeler
+4  A: 

Global search and replace in the IDE - there is no way to do Delphi 2006 see link text

Charles Faiga
+9  A: 

New object scopes: private published and protected published. New components added to forms would be declared private published instead of the current standard.

Right now, everything that's published is also automatically public. This is a mixture of two different paradigms (OO scope visibility and RTTI) that address different concerns and different access models, and don't need to be linked. Visibility scope (private/protected/public) only matters at compile time, while RTTI (run-time type info) only matters at runtime. Artifically joining the two at the hip promotes really bad OOP, especially in form design issues. For backwards compatibility reasons, "published" would probably need to still mean "public published", but that should no longer be the default, or the only choice.

Mason Wheeler
I don't think that protected published is necessary. For private published, a modifier on the class of some sort, or a compiler directive to control external visibility of added components would be a welcome feature.
skamradt
I agree that scope and RTTI should not be muddled, however adding another hack like "private" vs. "strict private" would be just evil. If the front end is to be rewritten, better clean up this mess completely. Published could then be combined with all scopes. Private needs to be exactly that.
mghie
All right. I agree it's a bit ugly. How would you do it instead? I asked skamradt this (he's one of my coworkers) and every idea he came up with was even uglier. I think mine's the least-bad alternative, but I'm open to better suggestions if someone can suggest one.
Mason Wheeler
OK, you win. Everything else I can think of would be much too wordy, compared to your proposal.
mghie
I like the idea of published private (or published protected). Current versions of Delphi do not allow to serialize the complete object state because everything below published visibility will not be included.
mjustin
+22  A: 

faster IDE by throwing out .net and stop following the ms vs style!!!

Yes, yes, yes! I wish I could upvote this more than once! Delphi made its reputation by being better than Visual Studio. Why did Borland consciously decide to imitate an inferior product? And why is Embarcadero continuing to follow Borland's bad decisions that almost ran Delphi into the ground?
Mason Wheeler
Yes, yes! My absolutely #1 reason that Delphi is a pain for me is the horrifically slow IDE. Please, please, God, make it fast again. Delphi developers: try installing Delphi 5 for a bit and remember the good old days.
apenwarr
Well, if you wanna be fair, install Delphi v5 on a computer from 2001 and compare it with Delphi 2010 on a computer from 2009.
Mick
+2  A: 

A modern shine for the VCL, something like (if not exactly via a purchase/licensing arrangemment) the DevExpress component pack. Including and especially an updated MVC Grid component.

Zartog
A: 

Due to the IDE stability issues I haven't upgraded from D7 yet so I might be after something that's been rendered moot by generics:

I would like to be able to redefine a routine in a descendant without actually using any code. This would in effect be a typecast. Too often I've had to write routines that simply typecast a variable and call the inherited method.

Loren Pechtel
+1  A: 

skin support for VCL controls.

this may be not even skin engine itself, but rather ability to create own skin engine and apply it to all controls.

i think this is very important thing for many companies.

so, what i would like to have is and ability to provide skins.

for example, create descendant of certain abstract class (supported by VCL) and apply it or create a class with support for certain interface (supported by VCL) and apply it.

currently to make application good looking we often have to reinvent the wheel by creating those buttons and edits again and again.

+2  A: 

What I don't want is a re-interpretation of existing language construct like what happened to string.

eed3si9n
The new string type already turned code that has been stable for over 15 years into a Russian roulette. 64bit Delphi is going to add another bullet to the gun. But we've all been looking forward to the day where we can use Delphi to fill 1TB of RAM with Mongolian characters.
Wouter van Nifterick
@Wouter: While I agree with the string type changes being dangerous - what's with the raving? A bad execution of an action does not prove that action to be wrong or without reason, does it? Unicode VCL is like 10 years overdue. No, more like 13 years (Delphi 2) - we would not have that situation ...
mghie
now if it would have been clear from the beginning that long strings could both be Ansi and Unicode, with conditional compilation. Microsoft has both supported and advised this kind of development since Windows NT came into being.
mghie
+1  A: 

a) Multiline strings.

b) Better sintax for closures (a anonymous methods evolution).

c) Mixins.

d) High order functions as methods of arrays and strings:

var
  MyArray: array of Integer;
begin
  MyArray := [1,6,8,10];
  NewArray := MyArray.map (|x| x+3);
end;

e) Garbage collection.

var 
  A: collected TMemoryStream;
begin
  A := TMemoryStream.Create;
  // using A
end; // automatic A.Free;

f) Contracts, like Delphi Prism.

g) Compiler need to be smarter. Every Delphi programmer lives to make this dumb compiler happy.

Junior-RO
+7  A: 

Subranges in case statements:

Type
   Terrain = (Room, Wall, Corridor, StairUp, StairDown);

   Stairs = StairUp..StairDown;



Case Terrainvar of
      Stairs : DoSomething;
   End;
Loren Pechtel
+2  A: 

A full preprocessor with (at least) LINE, FILE and MACROS!!!

No macros but I sure would like LINE and FILE for constructing error messages.
Loren Pechtel
+18  A: 

Improved Syntax highlighting:

Visualise {$IFDEF} ... {$ENDIF} by graying-out/hiding/folding pieces of code that are not going to be used.

Wouter van Nifterick
+16  A: 

Make it easier to create, install and spread components and packages.


  • Let component creators create things in a more graphical way.

    • Why can't I rightclick the component palette and say: "Add new"?
    • Why can't I rightclick an icon and choose "change icon", and be able to choose a standard type of image (gif,png,jpg,bmp)?

      Even the most advanced user is never going to find out how to change the icon of a component (create a .dcr file, blabla) without reading it in the documentation or on a website. It's totally unintuitive.


  • Create a new package format that contains all files and information that is needed to install it, so that end-users (Delphi developers) don't need to bother chosing the right package for their Delphi version, adding paths, compiling in the right order, etc.

Just have required files and folders in a certain structure, zip it and rename it to dpz.

People should be able to just double-click on such a file and have the stuff installed, in the same way that you can just click on a winamp skin to install it. Or it could be a bit like .rpm or .deb files on certain linux distributions.

(Why do I come up with this? A few weeks ago I had to explain to a very experienced but non-Delphi developer who was going to help out on a Delphi project how he had to install certain packages before he could get going. To make things worse there were 2 Delphi versions installed with conflicting .bpl files in paths hidden far away. By the time we were done, I think he already had enough of Delphi)


  • It would be very nice if there'd be a central repository for packages, probably best maintained by Embarcadero. It could partly be for Delphi what AppStore is for the iPhone.

    It would have the following functions:

    • Have dependencies between packages automatically resolved;

    • Enfore a certain namespace for all code and check for conflicts before accepting contributions;

    • Third party component developers can sell or give away their stuff via this place;

    • Delpi developers can easily find stuff;

This could be via a website, but it would also be neat to have it integrated into the IDE.

Where you search for a component in the tool palette, you'll see all registered components. Those that are not installed yet are just grayed out. Clicking such an icon downloads and install the right package.

This would be a giant productivity booster.

Wouter van Nifterick
I'll upvote this because I like most of the ideas, but I've gotta disagree with the "AppStore" thing. The last thing most of us want is for Embarcadero to go around censoring our work because it might compete with something they do or are going to do...
Mason Wheeler
A central repository for packages (open source) which could be downloaded automatically would be a great thing. It could be like Apache Maven, which is very popular. Packages could be made available for all Delphi versions, with / without Debug code and so on, for stable and beta releases and so on.
mjustin
http://www.delphipages.com/ has the AppStore type thing, but i think i could be done better
Christopher Chase
+14  A: 

A built-in profiler.

Why do we have to be held hostage by AutomatedQA with their AQTime program as the only non-invasive profiler that's available. It's not Delphi specific and they still (as of 20 Mar 2009) do not integrate into the Delphi 2009 IDE.

It doesn't feel right paying more for just a profiler than I did for my upgrade to Delphi 2009. I'd sooner pay Embarcadero $300 more for the upgrade with a profiler, than pay AutomatedQA twice as much for just AQTime.

Also see "Profiler and Memory Analysis Tools for Delphi": http://stackoverflow.com/questions/291631/profiler-and-memory-analysis-tools-for-delphi

and "Delphi Profiling tools": http://stackoverflow.com/questions/368938/369945#369945


A response just posted to: "How Does AQTime Do It?" by Andre Mussche tells of the open source non-invasive profiler called asmprofiler that Andre developed. I commented back that he consider donating it to Embarcadero for their inclusion with Delphi. Or he could market it himself (probably successfully) for $200 a pop.


Vote Here!

lkessler
You only have to shell out all that cash for the newest version. AutomatedQA has released an older version of AQTime as a free download. I don't remember where, though. Anyone know the URL for it?
Mason Wheeler
I understand that the older versions do not work well with Delphi 2009.
lkessler
+8  A: 

Sort of minor, but it would be nice if Delphi started up faster.

Delphi 4 used to start up in under 2 seconds. But Delphi 2009 takes about 30 seconds to start up.

Now it feels a bit like starting your computer. Press the On button, go away and do something else for 5 minutes, and then come back.

lkessler
Hm... Delphi 2009 takes only five seconds for me.
Andreas Rejbrand
@Andreas: I guess installing a few packages makes a big difference.
lkessler
+4  A: 

Should GExperts Functionality be Incorporated into Delphi?

http://stackoverflow.com/questions/303515

lkessler
+4  A: 

More examples in the help files

Charles Faiga
+1  A: 

Make the VCL Thread safe

Charles Faiga
This can mean so many different things that it's essentially meaningless without being more specific. Also, thread safety comes at a cost, a lot of people were furious about the impact of thread-safe string ref-counting introduced in Delphi 5. Finally I don't really think that the necessary ...
mghie
changes to allow for multiple GUI threads (which I think is what you're after) would be really worth it - there's nearly always a way around that. The cost of this change would probably way too high, compared to the gains.
mghie
Multiple GUI threads would be nice and cool, but to be honest I don't feel only having one GUI thread is a huge stumbling block today. With proper design the main thread should never block.
PetriW
A: 

Consistant Memory Management for vairous applications: exe application, dll application,service application.....,we don't want to use build with runtime packages any more!!!!!!!!!!!!!!!!!!!!!

+5  A: 
  1. Databinding like .NET. No more TDataset hell!

  2. Multiline strings in the code

    s := 'A String';

    multiline := "I'm the first row

    and I'm the second row

    and here there is the third row"; //Note " instead of '

  3. Simpler e stronger RTTI

  4. Simpler sintax for anon method

  5. Mixins like ruby.

  6. Skin for VCL

  7. Some high order functions like ruby, python or PHP

  8. Garbage collector for some specific type (es. if a class implements Interface "IManaged", object created from that class will be managed)

  9. Contracts, like Delphi Prism

  10. Inline variable declaration like Delphi Prism

  11. Workaround for "Circular unit references" error.

  12. Cross-compiler (at least for console/service application)

  13. No limit for constant string size.

  14. Integrated ORM (with or without designer support)

  15. Integrated Profiler

  16. Integrated Serialization system (Every object can be serialized as XML, JSON, Some Native Type. etc)

  17. Still better DataSnap

  18. Revamped TDBGrid

  19. Stronger support for SOAP

  20. Some support for build RESTful application type (something more of webbroker)

  21. Integrated UML tool for Class Diagram (at least) with code generator for REAL Pascal code (not like Together)

  22. Many Thanks For Your Work!

Daniele Teti
11: There are two workarounds for the circular unit references "error". If you can, put your uses for one or both of the units in the implementation section. If you can't, then refactor your code so you don't have circular dependencies.
Mason Wheeler
Changing the requirement, though, would break one of Delphi's best features: the fact that it's guaranteed to compile in O(n) time. If you allow circular references, you end up with O(n^2) hell like the C family. At work I work on a program with 3M+ lines of code and thousands of units. No thanks!
Mason Wheeler
16: It's already available. You don't really want to serialize *every* object, and for the ones you do, just descend from TPersistent and publish its properties.
Mason Wheeler
12: What's a service application for Linux or Mac OS X?
mghie
18: Rework all grid classes to look like something that has been developed after Windows 3.11
mghie
@Mason Wheeler:I dont want change Delphi compiler performance (O(n)) but could be some refactoring "suggested" to user with a simple "Apply" button.I want Serialize *every* object without change his base class, like .NET, JAVA, ruby, python, php and so on.
Daniele Teti
+2  A: 

One thing that I dislike in Delphi is the the way I have to implement a property when using interfaces, I don't know the limitations and why it was designed this way, but this is too "dirty" IMO.

type
 IMyInterface = interface
   function GetMyProp: Boolean;
   procedure SetMyProp(Value: Boolean);
   property MyProp: Boolean read GetMyProp write SetMyProp; 
 end;

Why can't I just write:

type
 IMyInterface = interface
   property MyProp: Boolean; 
 end;

Who cares how the class implements the getter and setter? Oh, ok, you tell me you want a read only property, then:

type
 IMyInterface = interface
   property MyProp: Boolean readonly; 
 end;

Or something like it, this would make my life much less complicated!

Fabio Gomes
I envy you if that's really the biggest complication your life has to offer.
mghie
It's not the biggest complication, this is just one complication which wasn't posted in this question yet, Delphi has a large portion of complications of my life, as I work with it 8 hours a day and the other 16 hours I'm usually drinking to forget those 8 hours ;)
Fabio Gomes
read only properties could be coded as property MyProp: Boolean read GetMyProp;without the need to use a special keyword (readonly)
mjustin
@mjustin yes but what if I want to implementa it as MyProp: Boolean read FMyProp?Using your approach I'd be required to declare a function.
Fabio Gomes
+1  A: 
  1. Regular Expression
  2. A filtering feature in Code Explorer (a search box as seen in Component List) with sub-string find option to filter Procedures, functions, records and variables etc.
  3. Switch back the help files to WinHelp format. It was much faster to find some help in older Delphi IDEs. At least an option to use older WinHlp files from D7 etc would be nice.
  4. An option to switch off Code Folding (I know the short-cut to do it, but I need an option to switch it off once and for all.)
  5. Improved DB support. (with support for sqllite etc)
  6. STL-like data structure library.
3. It will not happen. Even being terrible, all the content that Delphi help brings is far more than any WinHelp-based system can support. It gets even worse if you need to incorporate 3rd party help documentation in the mix. D7 Help was in the borderline - no big 3rd party help could be integrated without removing something from original help content.
Fabricio Araujo
A: 
  • Annotations (like C# and Java, and Delphi.NET?)

  • RTTI for constructors - this would allow to create constructor-based dependency injection (until now, only property-based DI is possible)

  • namespaces/packages (like C# and Java and Delphi.NET)

  • SOAP 1.2 support

  • JSON based object serialization

Edit:

  • include the XML Databinding Wizard in Professional edition
mjustin
Namespaces are an ugly workaround that C++ invented to compensate for the fact that its compiler doesn't know what a source file is. But then people got used to them, so Java and .NET blindly followed suit. I like my Delphi units as they are, TYVM. (I like your other ideas, though...)
Mason Wheeler
+1  A: 

Here is an email I sent to Nick Hodges a couple of weeks ago:

" Hello,

  1. Do you consider having static constructors/destructors in D2010?

I think this is the only thing left to be implemented to have a completely OOP Delphi language. Currently I can not think of a completely OOP oriented implementation of the singleton pattern. I really dislike the initialization, finalization sections. If I have static con(de)structors I would completely remove the need of implementation vars and initialization/finalization sections.

  1. Do you plan to have a OOP style wrappers for the tons of functions already existing. For example I make static classes like TFile, TPath, TString to wrap functions like FileExists as TFile.Exists()
  2. Do you plan to introduce attributes like in C# and Java. I think you already have some partial implementation.
  3. Do you plan having Garbage Collector?I know there are some patterns for reference counted objects but I would prefer having a GC class and a global compiler switch {$GC ON/OFF}
  4. Do you plan to make the binary .cds file format described. I really need to read such files in C# and currently I can’t since the file format is not described anywhere. I know I can export to .xml and than process it but this is not suitable for my purposes.
  5. Do you plan SQLite driver support?
  6. Any plans for native Mac OSX support. You did it for Linux and Mac OSX is just a kinda Unix and its market share is growing. Believe me if there is Delphi 7 for MacOS everybody would love it. XCode simply sucks.

I think if you do those 7 things in the next 5 years I won’t be migrating to .NET 10.0 soon and will continue to use Delphi as primary development environment.

Last word: Great stuff!! Delphi 2009 is finally stable after the a bit “experimental” Delphi 8 and 2006. You know why everybody loves Delphi 7 – simply because it was stable.

I would prefer D2010 to be more stable even compared to D2009 instead of having 64bit support or parallelism or other “fancy” stuff. "

Still haven't received answer though.

Delphi is not meant to be "pure OO". That's really a bad design pattern, since there are a lot of things that don't map well to the object paradigm. Just look at how often static variables and functions are (ab)used in Java because the language won't allow you to *not* make something an object!
Mason Wheeler
+1  A: 

IDE Intelligence

64bit compiler

Language features e.g. try/except/finally More generics ...

Salar
A: 
  1. Vastly improved linker error messages.
  2. Support for the Microsoft object file format (yes, I know that's very hard, but that way we wouldn't depend on C++ Builder for static linkage.)
Mihai Limbășan
>Support .. Microsoft object .. formatNot only is it "very hard" but it is a veritable black hole of near futility. Supporting the *format* is completely different than supporting their object layout, name-mangling schemes, implicit links to the MS rtl, etc.. That is where it is nigh impossible.
Allen Bauer
Loud and clear :) Thanks for the answer. Wish there was a newer release of the C++ builder command line compiler then (the BCB55 one is by now ancient.) Interop without one is difficult, and the price *is* a barrier.
Mihai Limbășan
+8  A: 
  1. A more stable and faster IDE
  2. Support for regular expressions
  3. Source code formater under the IDE
  4. A better help system including a real sample code exemple
  5. Extend VCL to graphic/picture/video/OMR/OCR
  6. A except/finally in same code block like:

``

MyObject := TMyObject.Create;
try
  MyObject.DoSomething;
except
  raise something
finally
  FreeAndNil(...);
end;

`

I LOVE the except/finally idea.
Chris Thornton
A: 

Let them bring back the VCL.NET personality in a modernized version and ditch Prism. That'd make me really happy :)

I have to disagree with this one. To reimplement .NET in the VCL is to guarantee that Delphi will always be behind the curve in the .NET world. It's like saying Delphi will never be a leading edge compiler again.
JosephStyons
+4  A: 

Unicode switch. As in Visual Studio. There are a list of build options in VS like:

  1. MyApp (Debug)
  2. MyApp (Release)
  3. MyApp (Debug - Unicode)
  4. MyApp (Release - Unicode)

I would like to have such an option to decide whether the app is Unicode or just plain ANSI build at compile time.

Olaf
+1  A: 

to make Delphi the first language :

  • cross compiler (only with header for linux and macosx 32/64bit)
  • vcl -> gtk or qt to build (form) application without lose past compatibility
  • full integration with SOAP and possibility to create a stand alone app/service as WebServices

is possible?

... and why not, do you know zkoss , a framework like that to build WebApplications with indy.. was fabuluos

+1  A: 

Compability With Windows 7 64 bit (http://social.technet.microsoft.com/Forums/en-US/thread/e56df407-bd0b-4ecc-b8a5-0a35bcd571cc/)

+1  A: 

some cryptography support

SHA,DES,AES, etc They are very useful

plus a way to digitally sign files

Charles Faiga
Some of these are already available in the Indy classes, for example it is very easy to encrypt with HMAC-SHA1 using Indy.
mjustin
A: 

A just in all aspects working Delphi -> C++Builder system. The HPP generator of RAD Studio 2007 is so crappy in basics - it is still nearly unusable. Using any new language feature of Delphi upsets the HPP generator completly. There are so many QC entries, but none resolved. If you add new features, than support it in the whole product - you are advertising with the C++Builder usage of Delphi code - but up to now, it is not.

So get this clear and working!

+1  A: 

A small thing... but it sure would be nice if they implemented structural highlighting, ala Castalia. That is a real lifesaver when you are working on nightmare 1000-line functions. In fact, they should just buy Castalia and include most of it's functionality natively (including the relevant options to turn it off).

JosephStyons
A: 

My top two items would be:

(1) 64-bit Compiler

(2) STL-equivalent

TheArtTrooper
+1  A: 

Better compatibility with legacy (ansi) sourcecode:

The ability to define on a per-unit basis if the default string/char types should be Ansistring or Unicodestring. The lack of this is my #1 problem.

+1  A: 

hmmm i'd like to see:

  • 64bit Compiler
  • Crosscompiling to other OS... Maybe OSX.
  • Windows 7 features in VCL
  • a Standard Version without any database stuff or a smaller version which is more affortable and not so pricy, but with third party components support

Cheers, murphy

+1  A: 
  • CASE on non-ordinal types
  • 64 bit compiler
  • profiler
  • Inline variable declaration
Jk
+3  A: 
  1. Interfaces for most VCL classes, f.e. IStringList, IDataset, IField, IDbControl.
  2. Support for Windows 7.
  3. More intelligent Refactoring tools(like ModelMaker Code Explorer has).
A: 

Bold support.... We are stuck on Delphi 2006 until Bold is updated...

Jon Samson
A: 

Some built in framework's - like MVC or MVP

With a lot of supporting libraries

Charles Faiga
A: 

what about delphi compiler for embedded devices?

avar
A: 

A built in switch to generate compiled obsfucation into the executable, like what is done with ExeCryptor.

procedure TForm1.ExampleMethod;
var
  sBuffer: string;
begin
  sBuffer := '';

{$StartObfucation}
   MyPassword := Edit1.Text + GenerateGUID();
{$EndObsfucation}

  sBuffer := 'Method Done';
end;

Code obsfucation would get added during Delphi compile.

A: 

class explorer for c++

A: 

We need implementation in Delphi functionality like in C with frendly classes - OOP is good but object is not enought for object model with big object quantity. You need to find way to implement entity of LAYER in around world in delphi code. It mean that classes are more integrated inside the layer and add some rules to interoperation between layers of objects(classes) (extend C frendship);

+7  A: 

Here's one that REALLY bugs me, but should be a simple one for them to add.

In the editor, you can right-click on a variable and select "Find Declaration". That is really useful and convenient.

But when debugging, it isn't a right-click option. Why not?

Please include that!!!

lkessler
I totally agree.
Mick
+2  A: 

I've been using Delphi since the beta before 1.0 and every Win32 version after that and I still consider it to be the best tool for building native Win32 exe-files.

I would like to see:

  • focus kept on Win32 (with 64-bit as a long term goal) instead of .NET
  • improved code-generation (afaik not much has been done here since Delphi 2.0)
  • improve IDE responsiveness. It feels quite large and sluggish compared to VisualStudio.
  • 100% backwards compatibility. I've not used Delphi2009 as much as I wanted to because of problems of converting older code to Unicode.

But in general I'm still a fan of Delphi so the above list should not be seen as complaints!

Ville Krumlinde
+2  A: 

beautifull !! except and finally in the same block. why not add the += expression ?

+1  A: 

a CONST keyword which serves some purpose (namely : tagging as "const" an object or a pointer would prevent changing the object/pointee's content)

LeGEC
+3  A: 

Since Delphi 7, a lot has been changed. But I still miss old clean IDE.

  1. Remove all Visual Studio like elements from IDE and create your own style.

  2. Design your own fast, stable and informative help system. A development environment uses a competing product's help system. Is this logical?

  3. Give us the tools of the future, as in pre-Delphi 7 era.

  4. Leave the .NET in the dust. Yesterday I needed a freeware CD burner, searched the net and found a software. I tried to install it, but it said it requires .NET framework 2.0, which I don't have. It redirected me to a site where I needed to download a huge package to use a 2 mb program. I removed it instantly. No one can explain me why I should install a 300 megabytes of framework to run a 2 megabyte executable.

These are my requirements for a new version of Delphi. Unless these are satisfied, I won't use another version of Delphi again.

A: 
  1. Document the DCU format.
  2. Make DCU Format compatible with old versions of delphi.
RRUZ
I'm not sure of the benefit of #2, and would be exteremly difficult to retroactively regain compatiblity with old versions. While I understand the desire to understand the DCU format, the need for that understanding is for very specialized purposes and dosn't really move the language forward.
skamradt
+1  A: 

Integrated support in the IDE for information in the xx_MemoryManager_EventLog.txt file that the debug version of FastMM generates. It would be nice to be able to jump to the lines in the source code where memory leaks are occurring.

Frank
A: 

I have used many RAD based IDE but after trying Delphi4PHP I really liked the way in which forms (HTML web pages) are implemented.

I wish that in Delphi we get a form which have a surface similar to a HTML page (as implemented in Delphi4PHP).

This would make designing forms with dynamic contents truly dynamic and easy. Imagine being able to show problems and text description of that problem in a controls content in data entry form right next to the control without having to put hidden labels next to each control and then making them visible and again hiding them.

Again Imagine the easy with which we can change the look and feel along with locations of controls (on a form) of the form just by making changes to an external CSS like file without having to recompiling the software!

Yogi Yang 007
+2  A: 

SCM integration is a must, tortoise is nice and Embarcadero could officially support it for full integration to the IDE.

I don't think it's a must. If you need SCM integration, check out the JCL. It has a SCM expert which integrates into the IDE. Works fine for me with SVN, but I still find I use TortoiseSVN more.
Conor Boyd
JCL is not up to par with Tortoise, for example we use trac and through Tortoise we add the tickets to the changelog and close /update the tickets at the same time. This is just an example, there are a lot more things missing from JCL.
+5  A: 

XML Serialization / Deserialization.

A: 

Nilable types like the Nullable types in C# 2.0. I don't like the Variant since it allows a lot more than int/null values t be written in a int?

Gad D Lord
+4  A: 
  1. Faster and non-blocking code insight.
  2. Packages without needing to compile with all the run-time packages. Just the one with the new functionality.I compile application without the run-time packages, but I can use just one, or two additional packages.
  3. Fix IDE bugs.
Mihaela
A: 

A working version of Kylix.

In this day and age, I guess that means a baked-in version of Mono with full support.

Electrons_Ahoy
+1  A: 

cross compilation to other platforms (osx, linux)

+4  A: 

Automatic deallocation without garbage collection.

Instead of this:

var o:TMyObject;
begin
  o:=TMyObject.Create;
  try
    o.DoSomething;
  finally
    FreeAndNil (o);
  end;
end;

It would be nice to get:

var o:TMyObject;
begin
  o:=local TMyObject.Create;
  o.DoSomething;
end;

Here, the keyword local forces the compiler to deallocate the object before the function finished. It would also enable such constructs:

(local TMyForm.Create(nil)).ShowModal;

This would create the form, show it modally, and deallocate it again in a deterministic/plannable/non-random way.

Lars D
+1  A: 
  • Linux
  • Firebird Support
  • Windows7 64 bit support
  • Easy IDE (Like Delphi7 )
  • Faster (Like Delphi 7 )
  • Unicode support for CDS Filter ( Midas )
  • Improvements on Database Controls ( for example improved DBGrid )
+5  A: 

a MUCH better HELP SYSTEM !!!!! PLEASE !!!

A: 

My wish list would be (prioritized):

  • More stable IDE, I've experienced several exception windows from the compiler at seemingly random moments. I've seen this in both 2006, 2007 and 2009 releases.
  • More modern compiler, honestly still in the 2009 version the most advanced CPU the compiler can optimize for is the Pentium Pro.
  • 64 Bit support, this is something I've waited for, and really looking forward to. As a side note, it may even force them to add some improvements to the compiler.
  • Cross platform version of VCL.... Now that would rock.
  • One thing that is very unlikely to get through. (and only for the C++ compiler really) standardize the VCL more, since my confidence in Codegear surviving for much longer (at least the C++ Builder product) is at a historical low. It would be fantastic using i.e. the Intel C++ Compiler with my C++ Builder Project.
  • Add a Webkit (or Gecko) component directly just like the TWebbrowser/TCPPWebbrowser, much like what you get in Qt.

Though I doubt we will see any of the points, except for the 64 bit support. Which by the way, would be a much welcomed addition.

TommyA
+1  A: 

64 bit compiler !

+1  A: 

64 bit compiler and cross platform compiling

A: 

Move dfm into pas file like in c#. Stable IDE

I'd rather have it the other way around.
Marco van de Voort
+2  A: 

Some Delphi Prism features:

  • LINQ
  • contracts
  • futures
  • parallel loops
  • "implies" operator

Reasonable pricing, Turbo edition that costs like a bicycle and not like a car.

A: 

Cross platform compiler

Felipe
A: 

Fix the Object Inspector - Please! It's been broken for so long now. When you elect to Arrange by Name it is very buggy!

It s a small thing but honestly, why has it remained broken for so long. I always opt for Arrange by Name and it is just a pain when scrolling. Seems like a refresh problem.

Gerard
+1  A: 

A really - really - effective means of moving backward and forward through a chain of declarations. The existing solution works well if the code compiles, and I've evidence that under D2009 it is worse than D7. I'd like a parser / text search mechanism to do the lookup even on code under construction. Bri

Brian Frost
A: 

i like to have aliases in "with"-statements.

Bernd Ott
A: 

I would like that Properties like .Caption and .Hint etc. can be replaced by a resource-String variable for better translation.

+2  A: 

Encrypted DataSnap!!!

plz, do Datasnap security!

A: 

1: Native Decimal type, decimal arithmetic, see QC report #68381 - this could replace FmtBCD.

2: Multiple main/foreground threads: each with it's own message loop and form handling; the application would exit when all foreground threads are finished - extremely useful when you want to develop a multitask application like Firefox or Office (the latter doesn't support this functionality either).

3: Complete documentation

4: Better interface RTTI, as in QC report #46581

5: Access to the syntax tree in IDE experts, for custom code formatters and stuff.

fugu5
A: 

My wishlist:

  • Stable IDE;
  • A thorough review of QC reports;
  • Cross-platform compilation support;
  • Compiler optimizations for modern CPUs;
  • 64-bit compiler;
  • BASM function inlining;
  • Revised RTTI that supports additional property data;
  • SVN integration.
A: 
  • Stability
  • Stability
  • Stability
  • x64-compiler
  • Official x64-support for the environment (not wow64)
+1  A: 

Support in the delphi framework for Microsoft Management console(MMC) snap-ins.

It is an important standard and been around for over 10 years

Charles Faiga
A: 

It would be great to have a code beautifier. There exists some from 3rd party even for free, but I would expect this feature in each good development tool.

+1  A: 

undo / redo in design time and stable IDE only

+1  A: 
  • When I am in a block of code (in a begin/end pair or try finally or repeat until or case structure or ..?) I would like that whole block to be highlighted.

  • Dock non-visual components in some kind of tray rather than in the Form because they get in the way.

  • I would like to make "application level" components which only show up for certain projects and are targeted to a set of projects. There are parts of large applications that can be made into components - but those components are only relavant to that project or set of projects. I do not make components because it is too time consuming. I would like an easy way to create them for a given project. Maybe like a component bucket for a project where I can create new components but I do not have to install them - they become available to the current project.

+3  A: 

Native PostgreSQL support !!

+1  A: 

Three compilers

  • first from Delphi 7 - you can make programs for Windows 98, you can develope old programs
  • second from Delphi 2009 - with Unicode
  • third for 64 bits programs
A: 

Get sources of BDE...

Jk
+1  A: 
  • Win64 support
  • Bold released with full source so we can move our apps up from Delphi 2006 (where they are stuck, cause Bold has not been updated for newer versions of Delphi)
Jon Samson
+1  A: 

Better support for projects that can be restored everywhere.

IOW proper support for relative paths and base paths in Delphi and all its tools.

Marco van de Voort