Community pulse: Delphi’s Killer Feature

Managing variables with ease

Managing variables with ease

The usual “off-line” comment: Guys, we’re preparing FileSuite 2. Many interesting things inside – many bugs fixed, folder constraints more scripting commands and, of course, Shell Events. On of the main themes of this release are the usability issues so feel free to submit your feedback. We hope that we’ll have something to present in 7-10 days. Thanks a lot.

And now back in present: There’s a question on StackOverflow asking What’s your favourite programming language, and its killer feature?

Seeing there that Delphi’s choice is #1 among the answers it seems that Delphi’s killer ‘feature’ is becoming (again) its community.
Continue reading

What one can found behind a mask?

What if we’ll add the “x” feature?
This is the question.

(adapted from) Steven C. McConnell

Well, first of all let’s see what we see πŸ™‚

Masks.MatchesMask Function

Indicates whether a file name conforms to the format specified by a filter string.

function MatchesMask(const Filename: string; const Mask: string): Boolean;

Call MatchesMask to check the Filename parameter using the Mask parameter to describe valid values. A valid mask consists of literal characters, sets, and wildcards.Each literal character must match a single character in the string. The comparison to literal characters is case-insensitive.Each set begins with an opening bracket ([) and ends with a closing bracket (]). Between the brackets are the elements of the set. Each element is a literal character or a range. Ranges are specified by an initial value, a dash (-), and a final value. Do not use spaces or commas to separate the elements of the set. A set must match a single character in the string. The character matches the set if it is the same as one of the literal characters in the set, or if it is in one of the ranges in the set. A character is in a range if it matches the initial value, the final value, or falls between the two values. All comparisons are case-insensitive. If the first character after the opening bracket of a set is an exclamation point (!), then the set matches any character that is not in the set.Wildcards are asterisks (*) or question marks (?). An asterisk matches any number of characters. A question mark matches a single arbitrary character.

MatchesMask returns true if the string matches the mask. MatchesMask returns false if the string does not match the mask. MatchesMask raises an exception if the mask is syntactically invalid.

Note: The Filename parameter does not need to be a file name. MatchesMask can be used to check strings against any syntactically correct mask.

(from Delphi’s Help)

So, we have here a very nice function primarily designed to (quote again) Indicates whether a file name conforms to the format specified by a filter string, right? Wrong!Continue reading

Community pulse: New ways to enhance Delphi

There is an interminable thread on the public.non-technical battlefield called ‘Delphi for the Mac’. At the time of writing, there are approximative 500 (five hundreds) posts on that. (493 to be more exact). No, I won’t provide a link. Because I think that is better (at least now after 500 posts) to start a concrete discussion in order to enhance our tool of choice.

Don’t get me wrong, I do think that defending a tool is good, but this defense must take the form of enhancing our product, and not denigrating the other one just because it doesn’t fit with “my/our” philosophy.

So, in my humble opinion, we must take and adapt what is good on the other product (XCode / Interface Builder in this case) and avoid what is bad. I know that you are willing to do give feedback on this, the vast majority of you proved it many times, including in the last poll which we made. The results are depicted in our classical pie on the right.

However, our community has a long lasting disease – we transform ourselves in a community of talkers in order to be a team of doers. We had this also with .NET and now it seems that we start to have it with Mac. Sons, the better covering of user’s needs through innovation is the thing which will ensure our survival.

So, in short: …and correct me if I’m wrong. πŸ™‚

Continue reading

The Anti-Case campaign

LegoSome time ago, Nick and Malcolm drew our attention on a site which promote an anti-if campaign. Well, I don’t know how much that campaign is interesting for us, because, sincerely, I don’t see any time soon the if construction removed from programming languages.

But I will propose another campaign which I think is much more stringent for Delphi developers… Continue reading

Delphi Legends 2009 Community Award: The interviews

WinnersHi guys, once again. We have one week since we published the results for Delphi Legends 2009 Community Award. We have also a lot of interesting info to publish both technical and some points of view regarding to important community events which we pass now (including the somewhat unrelated mySQL matter), but today we have a very special post. You will have the occasion to see who are the winners and what your chosen ones are thinking about. The post is rather long (it seems that is a fashion nowadays) but the content (in my humble opinion) really worth the effort… Continue reading

Community pulse: Delphi Survey hacked (well, almost) – Part 1

SurveyHi guys, first of all please let me tell you that we have some really interesting interviews with most of the nominees of our award! (more on the pipeline πŸ˜‰ ) – be sure to check them out in the next posts. Since then, we see that all of you are occupied with the famous Delphi Survey and because this survey is really technical grade and complex please feel free to discuss, ask and comment here and / or in the newsgroups. Note that we snipped the ‘obvious / clear’ (imho) questions… Continue reading

Delphi in the clouds for free

DelphiCloudsWell, to be sincere, I wanted to stop posting for few days till the publication of the results of our Award (at which most probably we’ll change the name in order to distinguish from Embarcadero’s award – we’re open for naming ideas, of course… πŸ˜‰ ).

But the Team’s real desire to have a nice dialogue with us – see Mike’s postings in .non-technical, but not only πŸ˜‰ – forces us to give them a humble idea, perhaps it would help… Continue reading

Turbocharging Delphi 2010 #2: Adding dynamic functionality to 3rd parties – the solution



First of all, let me stress that once again it is shown that the community is way smarter than any individual alone. And of course, when I say any individual, I mean any individual, regardless of company at which he’s working ;-). That’s why I think that the feedback was, is and will be the main innovation power, especially in our industry were, due of the very intellectual nature of our job we can make very easy mistakes if we advance alone. Only in this way we can approach to the naturalism and neutrality of perfection. Yes, I put the Stanley Kubrik‘s photo on purpose.

The man of the day in this case is Heinz Z. (Heinz, if you want, I can make public your full name πŸ™‚ ) which on my latest post about different techniques to extend the functionality of a class which we cannot control, gave a very simple and effective solution. Rather than leaving his answer there I think that’s appropriate to make a special post here giving him the pen:… Continue reading

Turbocharging Delphi 2010: Adding dynamic functionality to 3rd party frameworks (Read: VCL)

giraffeYeah, I know: Use Tag. But no, I won’t. If I can. But sometimes I cannot. But let me explain the problem first:

Many times there is a need to have metadata which has at least one of the properties bellow…

  • dynamic
  • added at runtime
  • to objects which we don’t control their class specification

…then we are in trouble… Continue reading

Innovation: Array quirks and Generators

ListsSpeaking a little bit about innovation, we had a great discussion about Class Signatures also here in this blog as well as in a very hot thread in the .language forum, and finally I’ve submitted also a QC Report – vote for it btw.

But today I would ask for your opinion about another feature request, which, in fact, will fill a gap (or rather an oddity?) in the Delphi compiler. But the main point is how to implement it… Continue reading

Community pulse: Undo in form designer.

reaching-the-sky-lOne of the main drawbacks of our IDE is the lack of Undo in the Form Designer. I thought that it was a matter of time to do it, but when I read this thread I figured out that the problem can be also elsewhere… …besides of the assumptions about what the community thinks about something. πŸ˜‰ Continue reading

What about Class Types?


Too many men
There’s too many people
Making too many problems
And not much love to go round
Can’t you see?
This is a land of confusion.

Genesis, Land of Confusion

…Well, there IMHO there is a problem with the way in which we’re coding. And this problem come from the fact that the classes represent a (rather) static system designed on premise in order to address the needs of a problem which is dynamic in its nature… Continue reading