Wish list: Slicing syntax

I’ve been doing a lot of string processing work lately.  Delphi has a lot of strengths, but unfortunately string manipulation really isn’t one of them.  It gets really messy really quickly if you’re trying to do anything complicated.  Extracting substrings out of strings quickly degenerates into a mess of difficult-to-read Copy calls.  It would sure be nice if there was a better way. Continue reading ‘Wish list: Slicing syntax’ »

DelphiLive keynote overview

I just got out of the DelphiLive keynote, presented by Michael Swindell and various other members.  As you can imagine, it was mostly about XE2 and demoing the new technologies, with a lot of talk about FireMonkey and using it for cross-platform development.  Here’s what really caught my notice: Continue reading ‘DelphiLive keynote overview’ »

XE2: TValue is much faster now

About a year and a half ago, I reported on how slow the original implementation of TValue in Delphi 2010 was, touching off a storm of comments and various other blog posts as other Delphi community members conducted similar experiments.  One thing that came out of it was a suggestion by Robert Love on how to improve performance by adding code to optimize for the most common cases. Continue reading ‘XE2: TValue is much faster now’ »

XE2: New Delphi, same old broken installer

Since D2009 at least, I’ve never managed to get a new Delphi release to install correctly on the first try.  Each time, it’s been the same basic problem.  Each time, I’ve contacted Embarcadero about it and asked them to fix it.  Unfortunately, they still haven’t. Continue reading ‘XE2: New Delphi, same old broken installer’ »

Programmers and social skills

Someone recently asked a very interesting question over at programmers.stackexchange.com.  Unfortunately, though somewhat predictably, people jumped all over it and it ended up getting closed and then deleted within 20 minutes of being asked.  That’s actually happening a lot recently, to the detriment of the community IMO, but that’s a subject for another time.  But I think there’s some actual, worthwhile discussion to be had in this deleted question, so I’m preserving it here, along with the answer I would have posted.  Hopefully it’ll be of interest to some people. Continue reading ‘Programmers and social skills’ »

Odd timing

I got an email this morning from Embarcadero, a pretty straightforward marketing letter that probably everyone on SA for Delphi received.  But one thing caught my eye:

64-bit is scheduled to be released this August.

That’s not particularly unexpected, since that’s when the new releases tend to come out.  But it does confirm one thing I thought was kind of strange when I got the DelphiLive! 2011 Call For Papers email a few weeks ago. Continue reading ‘Odd timing’ »

How default settings can slow down FastMM

One of the biggest challenges in working on the TURBU engine has been minimizing load times.  Some large projects have a whole lot of data to work with, which could take the better part of a minute to load if I tried to load it all up front.  No one wants to sit and wait for that, so I’ve pared down the loading so that only the stuff that’s needed right away gets loaded from the project database right at startup.

And yet, on one of my larger test projects, that wasn’t enough.  One of the things that has to be loaded upfront was map tile data, so that the maps can draw.  Unfortunately, this project has over 200 different tilesets, and it was taking quite a while to load that much data.  I’ve got a RTTI-based deserializer that can turn dataset records into objects, but it was taking a completely unreasonable 3.3 seconds to read the tile data.

Continue reading ‘How default settings can slow down FastMM’ »

Delphi Live 2011 announcement

Last year when I was at Delphi Live, the event was a bit smaller than it had been the year before.  Less attendees, less sessions, not as nice of a venue, etc.  Kind of to be expected, with the economy in the toilet and all, but still it was sorta sad.  I heard a few  people mention that the way things had gone, they doubted there would be another one this year.

Just yesterday I was thinking back on that, and I figured it was probably right, or we would have heard an announcement about it by now.  And that kinda sucked.  I’d really enjoyed going there the last two years.  Well, I’m glad to be able to say I was wrong about that.

Continue reading ‘Delphi Live 2011 announcement’ »

Firebird and booleans: one more hurdle

I wrote my last post about enabling booleans in Firebird after several hours of poking around in database code trying to get my query to execute without errors.  Once it worked, everything seemed great.  But I missed an important step: I hadn’t tried to write anything back to the database yet.

Continue reading ‘Firebird and booleans: one more hurdle’ »

Adding boolean support to Firebird+DBX

Firebird is a great database, but it’s got one really irritating drawback: no native support for the boolean type.  The standard solution to this issue is to create a BOOLEAN domain as a special restricted version of a smallint, and then make your database driver output the correct type.

The first part is easy.  The second, not so much, if you want to use DBExpress.  This really should be handled internally as a special case inside the DBX driver.  Unfortunately neither Embarcadero nor Chau Chee Yang, maker of the alternative dbExpress Firebird driver, has released the source to their drivers, neither driver handles the BOOLEAN domain, and neither driver has any sort of callback/event handler that you can set up to intercept and modify the schema of a query result.  But I’m not gonna let a little thing like that stop me! Continue reading ‘Adding boolean support to Firebird+DBX’ »