Delphi 2011: What components to use?

We’re heading to Delphi 2011 (which will bring Delphi on Macs and Linux) and after this we’ll have yet another hurdle which is 64-bit compiling. With so many convoluted paths (ok, ok, the team will do the best to make the transition(s) as smooth as possible, but still…) a question arises: What components shall we use?… Continue reading

Delphi 2011 and beyond: The Libraries Ahead

There is enough speculation about what library / libraries we’ll encounter in the next version(s) of Delphi. We know that the next version code-named Fullcrum (don’t click here and here – AFAIK the links aren’t related with the team’s intentions ;-)) will be a cross-platform product which will target Windows, Mac OSX and Linux… Continue reading

New Patterns in Software Development

Today we’ll have a slightly different post, delaying a little bit our other favorite themes, speaking about “new” (note the quotes) patterns in today’s software landscape.

Well, one can write an entire book on this theme, that’s why we’ll stop today on just one pattern: The Open Project.
Continue reading

Dangerous Cross-Roads

{$IFDEF Danger}...

Nobody can harm me, except myself.

St. John Chrysostom, speaking about his executioners

While preparing the FileSuite for release (already a beta is available for download) we will dig(g) once again in the dark areas of Delphi’s source code.

While in one of ours last posts we spoke about an opinion which now and then is a hot theme in Delphi community (the legendary var block) – and enough programmers expressed their concerns about the safety issues tied to this – today we’ll speak about something opposite… Continue reading

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

FileSuite, Delphi Core and the Cross-Platform Quest

Well, we have a new release of FileSuite featuring a fine-grained multi-threaded file engine which can execute any (oh, well…) custom action, exe file or script on a file or host event (yes, you can have a centralized backup control for any host from the network immediately when it will be online – no need to install any software client) enough bug fixes, mirroring enhancements aso. You can see some from the enhancements in the screenshots page. Also we found a new payment processing company which has much more features thing which allowed us to reduce the price. So, we must be happy… And yes we are. Almost. Continue reading

How the Humans Think

Happy new year to everyone! 🙂

To everyone? Well, yes, I suppose so because we don’t require any password to read this post 🙂
New year? Well, yes. Dude, have a look at the calendar. (Well, we accept as standard the Gregorian Calendar, isn’t it?)
Happy?… hmmmm… this can be a problem. A tough one. Let me explain… Continue reading

The Death of a Programmer

The one who runs from his soul’s reality is a liar.

St. Valeriu Gafencu

In this night we celebrate the Nativity of Christ. The only new happening on Earth from the beginning of existence. And I think that isn’t astonishing that God is almighty, because he is God, isn’t it? But I do think that it is astonishing that God could became so small. Small and weak like a man, giving to the others the possibility to kill Him. And of course, “the others” didn’t missed the opportunity…
Continue reading

A Better Time Machine

Well, here we are. Finally we released the FileWatcher. If was a very interesting experience about, if the time permits, we’ll blog further.

But what’s most important in this experiment was that we were determined to build a tool for you. For customers. Sounds great, isn’t? But in practice isn’t so straight as it seems to be… 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

Return of the JEDI

Battle of Wikipedia

Don’t sign my doom because is unfair. But support the next Patriarch which will come after me, if he’s chosen accordingly with the rules. The schism is the worst thing.

St. John Chrysostom

Our biggest strength is unity. Even if everyone from us has his own paths. But the conscience of a community makes us strong, stronger than others who are alone trying to compete one with each other. I think that the reason of our existence is to cover as good as we can the needs of our user base and not so much to compete with other entities (commercial or not) which might target the same market segment. We know what happened when a certain company tried to make different “killers”, finishing with .NET ‘killer’, forgetting about the real needs of its community.

On the other hand, if someone will do a study… Continue reading

Giving a heading light

HeadingWe ended the first technology preview stage of our new tool – FileWatcher (we spoke about it here) and we’re heading to a release. There are significant improvements and additional features to that early version posted there, (btw, if you want something in special, you can post it in comments, or send an email) but now I don’t want to speak about these.

I rather want to speak about another human phenomenon which we encountered during the construction of this tool. Because we started something from scratch, we did an experiment: without compromising the product’s quality, we wanted to use Delphi as much as possible and any other 3rd party library (especially our libraries) as sparingly as possible… Continue reading

Why we didn’t convert to .Net. And perhaps we never will…

ShipFirst of all, let me tell you that I don’t care about Delphi as a product by itself. But I do care about our users.

In fact, I was a very convinced assembly guy at the beginning. I didn’t like ZX Spectrum’s Basic, neither the Commodore’s, neither CP/M’s (sorry, guys, perhaps your mileage may vary). Always I tried to please the others and Basic didn’t gave me the power to do this.

In the days of Turbo Pascal I was quite distant from the product because… 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

The Omega Effect


The Green Grass of Home

Yesterday, David I passed by  and congratulated in a comment all the winners of “Delphi Legends” Community Award. (Look at the comments in that post).

It was a very nice gesture, but I really want to comment some of his words here because I think that they are really important.

We now have more people working on Delphi than ever before. Even with increased resources, we still need the vibrant Delphi community to make programming in Delphi the best way to build applications.

David Intersimone “David I”

Well, I think that is the time to speak about the Omega Effect…
Continue reading

Newsflash: No more MySQL?

mysql60-whereIt seems that dark clouds are gathering around of the future of mySQL since its acquisition by Oracle. In an uncertain atmosphere in which Ex-MySQL leaders take opposite stances in EU-vs.-Oracle discussion (see here) – and a broader overview here, Oracle wipes out without no explanation the downloads for mySQL 6 silently canceling the public beta of the yet-to-be-released database and most probably (?) stalling also the development… 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

The Genuine Value



“Any IT problem is human in its very core”

Few days ago I spoke about a war of thoughts which is present in our community – basically saying that somewhere in the future Delphi will die. And I proved that this isn’t founded – it is a perception which others exploit. But it seems that we should add much more data on this. Well, let’s start… Continue reading

Delphi is dying (TM) …NOT!


The devil seeks the accord in your mind. It is enough for him to start the war.

St. Mark the Ascetic

There is a constant thinking culture which questions the future of Delphi, “Delphi is dying”, if it is (still) a reliable tool etc. And now I don’t want to focus on the incurable nay-sayers which are among us, programmers, because these kind of characters are always a more or less useful presence for the community… 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

Fighting The Battle of Innovation


“Father, what we are missing in order to become saints like the ones from the past?”

St. Seraphim of Sarov

Preamble: This post is a humble addition to a comment made by someone from you. I’m sure that he knows what I’m talking about… …feel free to skip if you wish…

…On the day of the attack on Pearl Harbor (December 8, 1941, in Manila),… Continue reading

The Memory Barrier: Poll results, Comments, Solutions.

aquariumHi again – we will return to strategy posts soon, but till then, I owe you some results. Asking “Would you like a solution delivered quickly which would allow accessing more than 2/4 GB?” (see here) it seems that the results are quite balanced, however it seems most of you want improvements in this area in a form or another. But let’s see our pie:… 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

What means RAD anyway?

ClimbingOnce upon a time, Rapid Application Development “meant” IDE. This was Turbo Pascal. One could way faster work with an integrated environment rather than with disparate programs trying to fit them together in order to form a toolchain.

After this was the Visual bubble. The Form Designer with an Object Inspector near to it in order to speed up the GUI development process. This was Delphi and Visual Basic… Continue reading

For Whom The Bell Tolls


Take a look to the sky just before you die
It is the last time you will…

…being from enough years now a Delphi community member. Also, I monitor and/or I’m involved in other communities. But from some time now I look at Delphi community from outside. Also my other ‘specialty’ allow me to cast a very different eye on the matters. Different from a programmer perspective. But I’ll try to bind all the puzzles… Continue reading