13 May 2013

Class helper for updating a TActionList

On occasions I've wanted to provoke all actions in an action list to update themselves - when waiting for the application to update them when idle isn't soon enough.

I would have thought that TActionList would have a suitable method, but it doesn't seem to.

To save having to come up with the same hack over and again, I've started using this class helper:

type
  TActionListHelper = class helper for TCustomActionList
  public
    procedure Update;
  end;
...
procedure TActionListHelper.Update;
var
  Action: TContainedAction;
begin
  for Action in Self do
    Action.Update;
end;

You can now update all the actions in an action list by calling the Update that has been injected into any TActionList instance.

Seems to work so I thought I'd share it.

If you've got a better way, please comment.

03 May 2013

Starting work on CodeSnip v5

Just announcing that I'm about to start work on the next major update to CodeSnip, i.e. version 5.

So if you use CodeSnip 4 and have any new features you'd like to see in CodeSnip 5, now's the time to let me know. You can see the current requests, and make your own, using the Feature Request tickets on SourceForge. You can also up- or down- vote requests there.

I'm considering a radical overhaul of the way the program handles snippets - and will be trying to integrate the current read-only snippets downloaded from the Code Snippets Database with your own snippets more seemlessly.

The other main thrust will be the ability to more easily share snippets with others both directly and online.

If you think that's the right way to go please tell me, and suggest how you see it.

My aim is to get something working (a preview or a beta) by the year end the end of Q2, 2014. As ever, no promises! EDIT - timings have slipped. Why does everything always take longer than planned?!

And finally, anyone who wants to join the project will be welcome - just send me a message from my website's contact page.

Out of Memory with XE4

Time for a quick rant before breakfast!

Late last year I bought Delphi XE3 with the aim of using it instead of Delphi 2010 to work on release 5 of my CodeSnip program.

I was just about to start last week when Delphi XE4 was released, so I decided to get the £40 upgrade (without the iOS stuff) to that and use it instead of XE3.

So yesterday I did the first test compile of the current CodeSnip 4 code base. After fixing a few incompatibilities I got my first successful build. Only it wasn't. XE4 crashed with an out of memory error. The error happens if I do a normal compile. A full build works.

Here's the rub - even if I do a full Shift+F9 rebuild I still can't run the program in the IDE's debugger because attempting to run an already compiled program results in the out of memory error! Could it be dependancy checking that's causing the problem?

Well that's a £40 update fee up the spout. Not a happy bunny.

It gets worse. The problem still exists in XE3. So there's another £450 wasted.

And XE2's still got the same problem. At least I got that for free on the "old licenses" deal.

Seems that this is a well known problem with larger projects - see this item that's been on Embarcadero's Quality Central for some time. Pretty poor showing I think.

So, I've decided to move CodeSnip to Delphi XE for now - it's got some VCL features that I want to use that aren't in Delphi 2010.

In fairness (although I'm not feeling very fair!) XE4 works fine for compiling some smaller projects and its helping with testing code for the Code Snippets Database. That said I think it's reasonable that a not inexpensive tool labelled "Professional" should be able to cope with a 450 unit project, just like its great grandparent parents did!