My own Delphi story - celebrating 25 years

Setting the scene

It's 1995, and a wiry-looking engineer in need of a haircut is working at a tech services company in the Channel Islands. The island is Jersey (you can see the French coastline on a clear day), and he's over here for a week or two for training from his nearby Guernsey home.

This company does everything from IBM AS/400 maintenance to custom PC software development - the developer involved was brought in and trained to work on a banking package on those AS/400s but has ended up on the PC development side through a series of improbable events.

Visual Basic 3 has been the company tool of choice for these tasks - supplemented with Microsoft Access for the data-driven projects (usually backed by Microsoft's brand-new SQL Server, which is taking over from Sybase installs). He's been helping work on the in-house "In/Out" software the company uses to track who is in the office vs. who is out on calls (this is 18 months before the first mainstream instant-messenger product - ICQ - will appear and offer similar functionality).

He's also been working on a document imaging and indexing solution (iStation) for two local government organizations (they love to make a solution for one company then tweak it for others like many ISVs), and that is the limit of his VB experience. He's faced the insurmountable wall of Borland C++ and OWL enough times to feel that when it comes to VB... "This is the way."

Arrival

I'm kicking around in the narrow row of desks - unlike the sales team; we're not important enough to get dividers between our desks to turn them into semi-cubes.

Screenshot of Delphi 1 IDE in action A colleague named Mike strolls in, drops his bag and announces ambiguously, "I got it," and proceeds to power on his PC. "It" is a copy of Delphi - and a bootleg pre-release version at that (if I recall correctly).

I watch and ask questions as he and a few other developers crowd around his giant 17" CRT to check it out. At first glance, it looks like Visual Basic with a few more included controls, a slicker IDE, but a more confusing language. Over the week that follows, he keeps showing us discoveries, and interest increases.

Before the week is up, I have a ZIPped copy of my own to carry home.

Back home, I get past the confusion of unit dependencies and Pascal idiosyncrasies like := for assignment and dig deeper, discovering the beauty of the VCL - Visual Component Library.

My journey is aided by a curious programming book written in a style I have never come across before or since. It is a humorous tale of a private detective also writing Delphi apps on the side. It is called the Delphi Programming Explorer and helps me get over the hump.

The VCL is hard to describe if you've never used it, but I'll give it a shot. It was basically like the VB controls, but they gave you the source code, and there was a proper hierarchy to it. Up to this point in my life, I thought Object-Oriented meant you had classes and instances of classes. I had no idea about interfaces, inheritance, or good OO design, but Delphi and the VCL introduced it.

I was hooked. When Delphi 2 came out, it was time to dig very deep and buy my copy.

Using it

 Icons for controls in the Envy Delphi Development pack

Over time I pumped out an About95 control, then a Delphi Control Pack that included a font combo box, a gradient control, an improved list view, a button that popped out a menu control, a splitter control, a color combo box. Useful functionality that was otherwise missing but often seen in other non-Delphi apps.

I was shocked years later when I picked up the book Developing Custom Delphi 3 Components that my controls, and source, were included on the CD.

It received so many downloads that my local ISP got in contact and asked me very nicely, in the absence of any formal limits on bandwidth back then, to host the ZIP elsewhere. That and a few other tools I'd uploaded to my free personal site were now responsible for a significant percentage of their bandwidth. Double digits if my memory serves me correctly, and so relocated to Demon Internet.

Hot off the heels of that "success," I tried my hand at shareware again with the Envy Delphi Development pack. Polished and extended versions of the previous release now accompanied by a host more. An image view control, a database-bound label, a progress bar, shading control (like Borland C++), a tip-of-the-day control that needed nothing more than a text file of tips, a frame control to allow inset/outset and a bitmap tiling control for more texture. At this point, icons are sufficiently basic in the world that I can mostly get away with designing my own. I was a team of one.

I also put out my first proper shareware tool that provided a trickle of income for a while in the form of my Windows monitoring tool for "Remote Access BBS" called Monitor/RA. At one point, Diamond Multimedia purchased a commercial license to monitor their European support BBS.

Later on, I'd even make some controls that drew themselves looking like MacOS Platinum and NextStep.

My site back then had a heavy Delphi focus and is in love with small fonts, tiny icons, pastel shades, and almost-invisible watermark textures.

Alternatives

I never managed to get into Java desktop development despite many attempts. The screenshots looked good, but it never felt properly native-like Delphi did. Having to install a non-trivial runtime was also off-putting, especially for these small side-projects.

Borland C++ still felt like a large mountain to climb, and I had no reason, and so those books stayed on my shelf for many years in the "I should get to this." Of course, OWL died as Microsoft Visual C++ came up - a product that has never really delivered on the Visual unless you were prepared to commit to another mountain in the form of the MFC.. the mountain might have been climbable with a visual designer but, one never materialized.

Visual Basic was hard to go back to. It immediately felt limiting, and having to learn COM to develop controls was a show-stopper. After I had picked up Delphi 2, in fact, I never touched VB again as far as I can recall. I instead spent a lot of time in Microsoft Access connected to SQL Server, then onto ASP, and then finally ASP.NET.

I remember being excited when WinForms was announced. C# is a language I came to love more than Pascal, and WinForms was a definite improvement over VB - you could now easily write your own controls, but .NET Framework eschewed object-orientated design and patterns and instead just went with some inheritance and helper methods - ironically something Java did better. Comparing IO in .NET vs. IO in Java also highlights this - the latter more than happy to provide wrappers and layers for great composition vs. .NET lumping tons of stuff into static methods on File and providing a bunch of Readers you can never remember.

During my degree, we used Borland C++ builder, which took the VCL and provided you with the ability to use C++ instead of Pascal. I enjoyed using that, and just this year, I've found myself wanting to create a single-executable solution, but C++ was again something nobody in my circles was needing.

Legacy

Screenshot of Disk Image Managers sector overview

I kept buying copies of Delphi (at every alternate release, it's my own money) and found myself creating a tool for working with disk images of 3" floppy disks (yes, not 3.5") used by Sinclair, Amstrad, and Tatung machines. It was aimed at the archiving community, and Delphi was the tool I fell back to - I had zero interest in telling people to install large runtime packages. It's still maintained today, although it was ported to the free-software Lazarus alternative.

At one point, I also worked with a team on a ZX Spectrum emulator developed in Delphi. Their diving into x86 assembler at the tip of a hat irked me. I wanted to work on something maintainable with cool features rather than cater to a small vocal crowd of people on lower-powered PCs. I didn't know x86, and I had no desire to learn it - my brief encounter with 8051 had been enough.

Pascal always felt a little awkward to me, but the VCL, IDE, and those self-contained small executables (200KB in initial versions, IIRC) were worth staying for. Living on a small island meant that programming jobs were scarce and almost exclusively limited to COBOL on AS/400's or Microsoft tools on Windows.

The draw for me was always this idea of small standalone exes, which is hard to achieve on Windows with a decent GUI builder. There are third-party options, but every one of them seems to fail to provide the seamlessly enjoyable experience Delphi and the VCL did, and many of them are either poorly maintained or can cost a small fortune.

Interestingly Delphi and C++ Builder and now available in free community editions but confusing bundled together as "RAD Studio." I've wanted to write a specific Windows native app of late that needs to call a bunch of Windows APIs, and so C++ Builder is back on my machine. (I wish the small binaries of old hadn't become megabyte monsters... I'm sure I don't need most of what's in there)

[)amien

I know some of this is a bit gushing; that's nostalgia for you, I guess. I can at least assure you that I receive no compensation/kickback/affiliate from Embarcadero, who currently own Delphi/C++ Builder and RAD Studio (I had to Google their name, seriously).

0 responses