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,839 other subscribers

Archive for the ‘Delphi’ Category

An exponential back-off implementation I used somewhere; probably room for improvement, but it works good enough.

Posted by jpluimers on 2017/01/17

I will probably need this again somewhere in the future: An exponential back-off implementation I used somewhere; probably room for improvement, but it works good enough.

It’s Delphi, but I’ve not seen practical implementations in C# either.

(the updated version thanks to Anders Melander).

–jeroen


function TryGetLocationLockWithExponentialBackOff: Boolean;
const
cBase = 2;
cMaxWaitMilliSeconds = 1500;
var
lWaitMilliSeconds: integer;
begin
Result := True;
lWaitMilliSeconds := cBase;
while (not TryGetLocationLock) do
begin
if (lWaitMilliSeconds > cMaxWaitMilliSeconds) then
Exit(False);
Sleep(lWaitMilliSeconds);
Inc(lWaitMilliSeconds, lWaitMilliSeconds);
end;
end;


function TryGetLocationLockWithExponentialBackOff: Boolean;
const
cBase = 2;
cMaxWaitMilliSeconds = 1500;
var
lIteration: Integer;
lWaitMilliSeconds: Single;
begin
lIteration := 1;
lWaitMilliSeconds := 0;
while lWaitMilliSeconds < cMaxWaitMilliSeconds do
begin
Result := TryGetLocationLock;
if Result then
Exit;
lWaitMilliSeconds := IntPower(cBase, lIteration);
Inc(lIteration);
Sleep(Round(lWaitMilliSeconds));
end;
Result := TryGetLocationLock;
end;

Posted in .NET, C#, Delphi, Development, Software Development | 5 Comments »

RSS feed for Dave’s Development Blog – mostly OTA articles on the Open Tools API for Delphi and C++ Builder

Posted by jpluimers on 2017/01/16

TL;DR: http://www.davidghoyle.co.uk/WordPress/?feed=rss2

Since there is no RSS link  on the page [WayBackDave’s Development Blog – Software Development using Borland / Codegear / Embarcadero RAD Studio

Since I wanted to follow his “blog” (which is sort of a collection of WordPress pages, mainly about the programming OTA: the Open Tools API interface to Delphi and C++ Builder), I was looking for the RSS feed.

Luckily, Feedly knows how to detect most blogging platforms, so it came up with https://feedly.com/i/subscription/feed/http://www.davidghoyle.co.uk/WordPress/?feed=rss2 which indicates the final bit is the RSS feed URL.

Some interesting links from there:

via: [WayBackOTA Interface Search 1.1 and GitHub http://www.davidghoyle.co.uk/WordPress/?…

–jeroen

Posted in C++, C++ Builder, Delphi, Development, RSS, SocialMedia, Software Development | Leave a Comment »

Tool for licensing and protect my Delphi Win32 apps – Stack Overflow

Posted by jpluimers on 2017/01/11

I like the opinion of Mason Wheeler best. This is the shortened version:

… Only a perfect licensing system would actually do you any good, and there’s no such thing. And in the age of the Internet, if your system isn’t perfect, all it takes is for one person anywhere in the world to produce a crack and upload it somewhere,

If you want people to pay for your software instead of just downloading it, the one and only way to do so is to make your software good enough that people are willing to pay money for it….

But if you insist on running the rat-race against the internet of crackers or your software is in such a niche that cracking is more costly than paying for a license: Tool for licensing and protect my Delphi Win32 apps – Stack Overflow

–jeroen

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

Batch file to get a (non-sorted non-unique) list of units from a Delphi compiled map file

Posted by jpluimers on 2017/01/10

A few weeks ago in When you get “TfsScript.Execute” throwing a “Unregistered version of FastScript.” I wrote about “a process that explains any modules in the MAP file not resulting in DCU files”.

The below batch file aids in that process.

It takes a MAP file from your Delphi compiled executable that has debug information in text format which means you need to set your project linker options to generate detailed MAP files.

The Map Debug File (*.map) – RAD Studio documentation hasn’t much information but points to Detailed-Segments Map File – RAD Studio which has a bit more. Neither contain information on Delphi units as they focus too much on the C++ side of things. Then there is a tiny bit information in Understanding Delphi MAP File – Stack Overflow.

So I did some spelunking and came up with this batch-file which will likely work back until about the Delphi 7 era:

Read the rest of this entry »

Posted in Delphi, Delphi 10 Seattle, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 7, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | 1 Comment »

Delphi and Xcode scary thought

Posted by jpluimers on 2017/01/05

With Xcode updating frequently and Delphi about yearly and often taking more than 1 go at fixing things, you get this scary thought:

Scott Pinkham

I’ve learned to not update Xcode, OSX or iOS until absolutely necessary, and even then I usually stick with an older version of Xcode that is known to be compatible with Delphi. It takes a while for Embaradero/Idera to fix issues every time Apple makes some breaking change. I recommend rolling back to an earlier version if you can.

via: [WayBackHello, I upgraded my Xcode to the latest version 8.2.1 and ios SDK 10.2 Now…

–jeroen

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

Delphi To Go: Include resource files in your Delphi build process

Posted by jpluimers on 2017/01/05

Something to remember: Delphi To Go: Include resource files in your Delphi build process

Note it’s not enough to add a line like this to your .dpr file:

{$R 'New1.res' 'New1.rc'}

The resources actually needs to be part of your .dproj file (which basically is an XML msbuild file adhering to the MSBuild Project File Schema Reference).

That way, the BrccCompile target in $(BDS)\bin\CodeGear.Delphi.Targets will automatically pick it up during build.

I just checked and these target files support BrccCompile:

  • ...\Embarcadero\RAD Studio\7.0\bin\CodeGear.Delphi.Targets 
  • ...\Embarcadero\RAD Studio\8.0\bin\CodeGear.Delphi.Targets 
  • ...\Embarcadero\RAD Studio\9.0\bin\CodeGear.Delphi.Targets 
  • ...\Embarcadero\RAD Studio\10.0\bin\CodeGear.Delphi.Targets
  • ...\Embarcadero\RAD Studio\11.0\bin\CodeGear.Delphi.Targets
  • ...\Embarcadero\RAD Studio\12.0\bin\CodeGear.Delphi.Targets
  • ...\Embarcadero\Appmethod\13.0\bin\CodeGear.Delphi.Targets
  • ...\Embarcadero\Studio\14.0\bin\CodeGear.Delphi.Targets 
  • ...\Embarcadero\Studio\15.0\bin\CodeGear.Delphi.Targets 
  • ...\Embarcadero\Studio\16.0\bin\CodeGear.Delphi.Targets 
  • ...\Embarcadero\Studio\17.0\bin\CodeGear.Delphi.Targets 
  • ...\Embarcadero\Studio\18.0\bin\CodeGear.Delphi.Targets

Which means it’s available as of Delphi 2007 until at least Delphi 10.1 Berlin and might even work in Delphi 2006

It could be a little bit flakey in Delphi 2007 (I’ve had many msbuild issues there) but more recent versions should be fine.

–jeroen

Related: I have a big file to add +’ at the beginning of a line and ‘ at the end…- shlomo abuisak – Google+

 

Posted in Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Resource Files and Scripts (.res/.rc), Software Development | Leave a Comment »

Delphi Berlin version numbers: Release/Update1/Update2

Posted by jpluimers on 2017/01/04

Vendors should post these, but alas Embarcadero is not the only one failing here, so here are build/version numbers of the various Delphi Berlin releases until now:

Sébastien Paradis:

  • Berlin initial release -> 24.0.22858.6822

Horácio Filho:

  • Berlin Update 1 -> 24.0.24468.8770
  • Berlin Update 2 -> 24.0.25048.9432

Via: [WayBackHi everyone How to know wheter my installed Berlin instance includes update 2?. … G+

If you need the ISO images: Positive: Delphi 10.1 Berlin Update 2 is out – ISO links.

–jeroen

Posted in Delphi, Delphi 10.1 Berlin (BigBen), Development, Software Development | 1 Comment »

The curse of vulnerable OpenSSL DLLs

Posted by jpluimers on 2016/12/30

When you ship OpenSSL DLLs, you should provide an update mechanism outside of your regular product cycle that updates these shortly after vulnerabilities are fixed.

Few if any products do that. So I made an overview from products and OpenSSL DLL versions I had installed on various systems.

I’m a developer, so the list is biased towards tools I use often.

All of them are vulnerable: [WayBackhttps://www.openssl.org/news/vulnerabilities.html

  • 1.0.2.h by ContinuaCI 1.8.1.185 PostgreSQL and Avast 12.3
  • 1.0.2.g by SourceTree 1.9.x embedded git_local
  • 1.0.2d by Git for Windows 2.6.1
  • 1.0.2a by SQLite browser 3.7.0
  • 1.0.1m by Delphi 10.0 Seattle
  • 1.0.1l by Ruby 2.3
  • 1.0.1f by SlikSvn 1.8.5
  • 1.0.1g by Delphi XE8, Delphi XE7, VMware Workstation OVF tool and Adobe Creative Cloud 2.8.1
  • 1.0.0g by Delphi XE6, Delphi XE5, Delphi XE4, Delphi XE3, Appmethod 1.13 and CollabNet SVN Client 1.7.5
  • 1.00d by MarkdownPad 2
  • 1.0.0 by FinalBuider 7 XE2 and FinalBuilder 7 EE
  • 0.9.8za by VMware Remote Console Plug-in 5.1 and VMware Virtual Infrastructure Client 5.1
  • 0.9.8y by VMware VIX Workstation 10
  • 0.9.8t by Veaam Backup and Replication
  • 0.9.8r by ContinuaCI 1.8.1.185 hg support, VMware VIX and VMware Workstation 8.0.2
  • 0.9.8q by Veeam Backup Transport, Veaam Backup, xampp 1.7.4 and Replication and VMware Virtual Infrastructure Client 5.0
  • 0.9.8o by xampp 1.7.4
  • 0.9.8l by xampp 1.7.4
  • 0.9.8n by Delphi XE2, Delphi XE and VMware VIX Workstation 7.1.0
  • 0.9.8m by VMware VMRC Plug-in, VMware VIX and VMware Workstation 8.0.2
  • 0.9.8i by VMware Virtual Infrastructure Client 4.1
  • 0.9.8d by Database Workbench Pro 4.4.3, Database Workbench Pro 5.2.4 and VMware vSphere CLI Perl
  • 0.9.8b by Adobe Creative Suite 5
  • 0.9.7m by VMware VIX server 1.0.9
  • 0.9.7l by VMware VIX VIServer 2
  • N/A by Adobe Create Suite 5 and VMware VIX server 1

–jeroen

via: [WayBackDoes Delphi installer install OpenSSL dll’s?

PS: Below some Software Archeology related links in the comments.

Posted in .NET, CollabNet, Delphi, Development, DVCS - Distributed Version Control, git, OpenSSL, Power User, Ruby, Security, Software Development, Source Code Management, SourceTree, Subversion/SVN | 7 Comments »

When you get “TfsScript.Execute” throwing a “Unregistered version of FastScript.” MessageBox

Posted by jpluimers on 2016/12/29

In recent Delphi version, FastReport version 5 ships. But for parts of FastReport, it’s a trial. This includes the FastScript part. The trial is very close to the real FastReport 5 thing. So real that when you compile you don’t see a difference, not even when trial and official things are mixed.

The only difference is that the trial will have a ShowMessage result like this:

ShowMessage('Unregistered version of FastScript');

ShowMessage(‘Unregistered version of FastScript’);

[Window Title]
Fastscriptexecute

[Content]
Unregistered version of FastScript.

[OK]

This occurred when I tried to move a the build process to a build server; a very tiny program will show this:

program FastScriptExecute;

uses
  Vcl.Forms,
  fs_iinterpreter;
{$R *.res}
var
  fs: TfsScript;
begin
  fs := TfsScript.Create(nil);
  try
    fs.Execute();
  finally
    fs.Free();
  end;
end.

The build server had Delphi installed but not FastReports 5. I put all the sources in version control and fiddled with the project search paths until it built on the server.

Wrong!

Since the trial is so close to the real version, it will compile even if you don’t include all directories. In fact some permutations of the FastReports source and Delphi XE8 FastReports trial DUCs build perfectly fine.

Read the rest of this entry »

Posted in Delphi, Delphi XE8, Development, FastReport, Software Development | 1 Comment »

Delphi class constructors and initialisation order

Posted by jpluimers on 2016/12/27

A long while ago, but still an interesting discussion: Is there a predictable order of execution for Class Constructors? leading to these links:

–jeroen

Posted in Conference Topics, Conferences, Delphi, Delphi 10 Seattle, Delphi 2010, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Event, Software Development | Leave a Comment »