The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,854 other subscribers

Archive for the ‘Delphi’ Category

Reminder to Self: write Eurekalog article about finding cause for hard to catch Access Violations in Delphi

Posted by jpluimers on 2014/09/11

Reminder to Self: write Eurekalog article about finding cause for hard to catch Access Violations in Delphi

–jeroen

via: web services – Access Violation (Delphi) – except the first run – Stack Overflow.

Posted in Delphi, Development, Software Development | Leave a Comment »

Continua CI Version 1.5 has been released (build 1.5.0.268); smaller, faster, loads of new features; Spring4D XE7 builds automated

Posted by jpluimers on 2014/09/10

I’m really happy that Continua CI Version 1.5 got released a few hours ago as per the Continua 1.5 released announcement.

It means that my Build Automation Session during the Dutch Delphi 2014 conference tomorrow can range from:

  • build using MSbuild from the command-line
  • build batch files
  • build using a custom front-end
  • build using Continuous Integration front-end

The session will explain lots of details about what various Delphi versions do, how to cope with dependencies, etc.

In the mean time, the preliminary Spring4D work on build automation is visible to guest users. Those include building for Delphi XE7 for the Win32, Win64 and OSX32 targets (in Debug and Release mode).

There is a huge list of Version 1.5 History @ Continua CI changes, which is partially quoted below.

For me these are the most important:

  • in-place upgrade without having to do any changes on my part
  • truckload of new features (including Delphi XE7, NuGet and Fake F# support)
  • smaller
  • faster

(as a side note: also FinalBuilder 7 was recently updated to support Delphi XE7)

In general, I like Continua CI a lot, most importantly because:

  • it is very stable
  • it has native support for a wide range of software development tools (including Delphi, Visual Studio and much more)
  • supports DVCS (like Git/Mercurial) just as you expect it to
  • if something breaks, you get a response and fix very very soon

You can download the new version through the Downloads @ Continua CI. These are the direct links:

For a breaking issue, there has been an important bug fix, so the new downloads are:

I created an RSS feed through Page2RSS to watch any new releases of Continua CI.

Parts of the changes in 1.5.0.268 1.5.0.278

The full list of changes are at Version 1.5 History @ Continua CI.

Be sure to also look at the official Continua 1.5 released announcement.

Read the rest of this entry »

Posted in .NET, Continua CI, Continuous Integration, Delphi, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Development, Software Development, Spring4D | 5 Comments »

Revisited from the .NET side: Why doesn’t WINWORD.EXE quit after Closing the document from Delphi? (via: Stack Overflow)

Posted by jpluimers on 2014/09/08

I long time ago, I asked about  [WayBack] Why doesn’t WINWORD.EXE quit after Closing the document from Delphi?.

It turns out that question is a lot harder in .NET than it is in Delphi. I already had a gut feeling of this when at clients I saw many more .NET applications leaking WINWORD.EXE stray processes than Delphi applications, even though both kinds were calling Quit on the Word application object.

Delphi has a deterministic way of coping with interfaces (hence you can do a One-liner RAII in Delphi, or make a memento): Interface references are released at the end of their scope.

.NET has non-deterministic finalization of the Common Language Runtime (CLR) and has Runtime Callable Wrappers (RCWs) around your COM references which are sometimes created “on the fly”.

The combination of non-deterministic finalization and RCWs can be very confusing, so lets start with the parts first. Read the rest of this entry »

Posted in .NET, Delphi, Development, Software Development | 2 Comments »

Posted by jpluimers on 2014/09/07

Nostalgia:

dec :: vax :: vaxeln :: 2.0 :: AA-EU39A-TE VAXELN Pascal Language Reference Manual Mar85 http://bitsavers.trailing-edge.com/pdf/dec/vax/vaxeln/2.0/AA-EU39A-TE_VAXELN_Pascal_Language_Reference_Manual_Mar85.pdf

Posted in DEC Pascal, Delphi, Development, Pascal, Software Development | Leave a Comment »

Delphi XE7 is out with version 21.0.17017.3725; Spring4D is almost ready.

Posted by jpluimers on 2014/09/04

Remarkably few people note the actual version number of the Delphi releases, though that is the version mentioned in any QC reports.

Now that Delphi Insider: Download links for Delphi XE7, C++Builder XE7 and RAD Studio XE7 are there, the ftpd and altd have been seeded a few days ago with the version time stamped at the end of last month, here is the version number:

QC version number for Delphi XE7: 21.0.17017.3725 (Update 1 has version 21.0.17707.5020).

I got that number from the first XE7 report in QC posted almost 2 months ago (and verified it against other reports), so it seems XE7 has undergone some serious testing.

Before installing, note that in addition to the below documentation links:

Be sure to have at least 60 gigabytes of free disk space before you attempt to install.

This in addition to the 5 gigabyte ISO file (:

XE7 doc links

Spring4D

On the Spring4D side (yes, it has a new logo!), Stefan has added XE7 support, so a new release of that is near.

–jeroen

Posted in Delphi, Delphi XE7, Development, QC, Software Development | Tagged: , | 1 Comment »

Some great reads from Barry Kelly

Posted by jpluimers on 2014/09/02

Barry Kelly (Twitter, [WayBackHN, SO, G+Blog) was one of the Delphi compiler engineers.

He wrote a great number of insightful blog posts, some of which are in chronological order: Read the rest of this entry »

Posted in Delphi, Development, Software Development | 2 Comments »

Developer Skill Sprints video links

Posted by jpluimers on 2014/08/29

After Bill Meyer asked, Helge Larsen wrote:

The landing page for Developer Skill Sprints is here: https://www.embarcadero.com/landing-pages/skill-sprints

The videos is on Developer Skill sprints YouTube channel first: https://www.youtube.com/playlist?list=PLwUPJvR9mZHhZTajVWsgaFPLtDA-t1Xwc

–jeroen

via: Anyone know what’s up with the links to the videos for the Developer Skill….

Posted in Appmethod, Delphi, Delphi XE6, Development, Software Development | Leave a Comment »

Delphi: So XOAuth2 SASL component that can do OAuth2 (via: Asbjørn Heid, G+)

Posted by jpluimers on 2014/08/29

Thanks Asbjørn Heid for sharing this:

I made this!  –

So this week I’ve been mostly trying to add some GMail integration to our app. Google now requires OAuth2 authentication when using IMAP, unless you turn off some scary-sounding security setting on your account.

While Indy‘s IMAP component supports SASL authentication, there was no XOAuth2 SASL component out of the box. Thanks to the new REST stuff in Delphi, the OAuth2 basics where there so just had to tie them together.

In case others might find it fruitful, I’ve shared my results here: https://github.com/lordcrc/IndySASLOAuth2

notes:

–jeroen

via: So this week I’ve been mostly trying to add some GMail integration to our app.….

Posted in Delphi, Delphi XE5, Delphi XE6, Delphi XE7, Development, Software Development | 1 Comment »

Delphi: always watch the compiler Warnings

Posted by jpluimers on 2014/08/28

Quiz questions:

  1. Does the below unit test succeed or fail?
  2. Why?
procedure TestHResult.Test_EOleException;
var
  OleException: EOleException;
  IResult: LongInt; // == HResult
  UResult: Cardinal; // == DWord
begin
  IResult := $800A11FD;
  UResult := $800A11FD;
  try
    OleException := EOleException.Create('message', $800A11FD, 'source', 'helpfile', -1);
    raise OleException;
  except
    on E: EOleException do
    begin
      if E.ErrorCode = $800A11FD then
        Exit;
      Self.CheckEquals(E.ErrorCode, $800A11FD, 'E.ErrorCode should equal $800A11FD');
    end; // E: EOleException
  end;
end;

Read the rest of this entry »

Posted in Conference Topics, Conferences, Delphi, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Event, Software Development | 2 Comments »

A way for a VCL TFrame to be notified when it is actually shown (via G+)

Posted by jpluimers on 2014/08/27

Interesting, as I didn’t think this was possible. Thanks Oliver Funcke!

Notification when a `TFrame` becomes visible.

TMyCommonFrame = class(TFrame)
  private
    FOnShow: TNotifyEvent;
    procedure CMShowingChanged(var M: TMessage); message CM_SHOWINGCHANGED;
  public
    property OnShow : TNotifyEvent read FOnShow write FOnShow;
  end;
...
procedure TMyCommonFrame.CMShowingChanged(var M: TMessage);
begin
  inherited;
  if Showing and Assigned(FOnShow) then
    FOnShow(Self);
end;

–jeroen

via Is there any way for a VCL TFrame to be notified when it is actually shown to….

Posted in Delphi, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Development, Software Development | Leave a Comment »