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

Archive for the ‘Delphi’ Category

Hmmm. Castalia for Delphi: Castalia for Delphi is not currently available. Thank you for your interest. – via Uwe Raabe – G+

Posted by jpluimers on 2015/01/27

Thanks Uwe Raabe for sharing

This sounds interesting: http://www.twodesk.com/castalia/thanks.html

</rumours on>

As the page then read:

Castalia for Delphi is not currently available. Thank you for your interest.

Copyright © 2013 Jacob Thurman

–jeroen

via: This sounds interesting: http://www.twodesk.com/castalia/thanks.html.

Posted in Castalia, Delphi, Delphi XE7, Delphi XE8, Development, Software Development | 3 Comments »

RosettaCode: cool way to improve your coding skills

Posted by jpluimers on 2015/01/22

Wow: I feel like having lived under a stone for 8 years, as RosettaCode has been alive since it was founded in 2007 by Mike Mol.

The idea is that you solve a task and learn from that, or learn by seeing how others have solved tasks or draft tasks.

So in a sense it is similar to the Rosetta stone: it has different languages phrasing the same tasks.

There are already a whole bunch of languages on RosettaCode (of which a few are in the categories below), and you can even suggest or add your own languages.

When you want to solve tasks, be sure to look at the list unimplemented tasks by language that leads to automatic reports by language (for instance two of the languages I use most often: C# and Delphi).

I’m sure there are lots of programming chrestomathy sites, even beyond the ones, and it feels very similar to programming kata sites.

–jeroen

Posted in .NET, APL, Awk, bash, Batch-Files, C, C#, C++, COBOL, CommandLine, Delphi, Development, Fortran, FreePascal, Java, JavaScript/ECMAScript, Lazarus, Object Pascal, Office VBA, Pascal, Perl, PHP, PowerShell, PowerShell, Prism, Scripting, sed script, Sh Shell, Software Development, Turbo Prolog, VB.NET, VBS, VBScript, Visual Studio and tools, Web Development | Leave a Comment »

A few nice G+ threads on Castalia and Usertility being acquired by Embarcadero, and Jacob Thurman staying active on them

Posted by jpluimers on 2015/01/21

Uwe Raabe was the first one to suggest that it might just be so that Castalia got acquired by Embarcadero. In the thread rumoured Usertility might as well been, or that Jacob Thurman might be responsible for IDE stability.

So today

These seem to be the hard facts:

  • Castalia and Usertility are now owned by Embarcadero
  • Jacob Thurman keeps involved but it is unclear if he is employed by Embarcadero

–jeroen

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

Favorite Documents extension for Visual Studio 2010 and up

Posted by jpluimers on 2015/01/20

This used to be a great Delphi-only feature that I missed in Visual Studio, but I found the downloadable free extension Favorite Documents extension.

It is a by Sergey Vlasov, who has a whole bunch of free and paid Visual Studio add-ins, extensions and tools.

–jeroen

Posted in Delphi, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Development, Software Development, Visual Studio 11, Visual Studio 2010, Visual Studio and tools | Leave a Comment »

Delphi: ZEROBASEDSTRINGS and maintaining cross-version Delphi libraries

Posted by jpluimers on 2015/01/14

One of the features that bites me over and over again is the ZEROBASEDSTRINGS that got introduced in Delphi XE3 and is by default ON in mobile compilers and OFF in Desktop compilers.

Back then, Mark Edington showed a small example of the effects:


procedure ZeroBasedTest;
const
S: string = '012';
begin
{$ZEROBASEDSTRINGS OFF}
Writeln(S[1]); // shows "0"
Writeln(S.Chars[1]); // shows "1"
{$ZEROBASEDSTRINGS ON}
Writeln(S[1]); // shows "1"
Writeln(S.Chars[1]); // shows "1"
end;

view raw

gistfile1.txt

hosted with ❤ by GitHub

and then explained:

The XE3 RTL source code has been refactored to be string index base agnostic. In most cases this is done by utilizing string helper functions which are always zero based.
When it is necessary to traverse a string, the Char[] property is often used to access the individual characters without concern for the current state of the compiler with respect to zero based strings.

In addition, the “Low” and “High” standard functions can now be passed a string variable to provide further flexibility as needed.
When zero based strings are enabled, Low(string) will return 0,  otherwise it will return 1. Likewise, High() returns a bounds adjusted length variation.

The problem is the non-existent forward compatibility of the other compilers (Delphi XE2 and lower).

So if you have library code that needs to work in Delphi versions, you cannot use the High and Low to make the code ZEROBASEDSTRINGS neutral.

Many Delphi developers regularly skip many Delphi versions, so these are still popular:

  • Delphi XE1 and XE2 (the last 2 compilers before Delphi really started to support mobile)
  • Delphi 2007 (the last non-Unicode Delphi compiler)
  • Delphi 7 (the last non-Galileo IDE)

The result is that library code is full of conditionan IF/IFDEF blocks like these:

Fix: this works only in XE3 or higher: “for Index := Low(input) to High(input) do // for ZEROBASEDSTRINGS”


{$ifdef GX_VER240_up}
for Index := Low(input) to High(input) do // for ZEROBASEDSTRINGS
{$else}
for Index := 1 to Length(input) do
{$endif GX_VER240_up}

view raw

gistfile1.txt

hosted with ❤ by GitHub

–jeroen

via: Mark Edington’s Delphi Blog : XE3 RTL Changes: A closer look at TStringHelper.

Posted in Ansi, Delphi, Delphi 2007, Delphi 7, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Encoding, Software Development, Unicode | 8 Comments »

Search engines for the Embarcadero/CodeGear/Borland newsgroups

Posted by jpluimers on 2015/01/08

Even though 15 years ago they proudly announced to have archived 20 years of usenet, it is virtually impossible to find usenet groups through groups.google.com, and they certainly do not archive the groups at forums.embarcadero.com (formerly forums.codegear.com and forums.borland.com).

So I found only a few sites that do index the Delphi groups (and they do index more than just the Delphi newsgroups), so if you know more, please let me know!

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

Just in case I ever need it again: jed-software.com » Blog Archive » FastMM4 Gui – Source Code.

Posted by jpluimers on 2015/01/07

Just in case I need the FastMM4 Gui – Source Code ever again.

Read the rest of this entry »

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

Nick Hodges: Man, the chapter on Multi-threading is going to be seriously hard to write.…

Posted by jpluimers on 2015/01/05

A very nice thread around multi-threading in Delphi is evolving at Google Plus: Nick Hodges: Man, the chapter on Multi-threading is going to be seriously hard to write.….

Note: you need to be member of that G+ group to read it, but Nick Hodges allows most people in…

–jeroen

(I also tagged it XE8, as by the time such a book arrives, that Delphi version has most likely come out given the past release frequency <g>)

Posted in Delphi, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | 7 Comments »

Blast from the Past: `TThread` got introduced in Delphi 2

Posted by jpluimers on 2015/01/03

Thanks Nick Hodges for asking, and Uwe Raabe for answering:

Yep! Delphi 2 had TThread while Delphi 1 did not.

It resulted in an interesting thread including topics like cooperative multi-tasking and named pipes under DOS by using Turbo Pascal.

Boy, I remember the \pipe\ days and releasing a time slice by calling INT $28, $15 and $2F combinations like this:


asm
int $28
mov ax, $1000
int $15 { DESQview/TopView give up time slice }
mov ax, $1680
int $2F
end;

Note: you can even use INT $2F with AX=$1680 to check if you are running in a DOS x86 VM and other OS checks.

–jeroen

via: Anyone remember which version of Delphi introduced TThread?.

Posted in Borland Pascal, Delphi, Delphi 1, Delphi 2, Development, Pascal, Software Development, Turbo Pascal | 4 Comments »

Delphi XE7: The new Tasks / Parallel Computing Library. Like any library, it is not a magic bullet!

Posted by jpluimers on 2015/01/01

In Delphi XE7, Embarcadero introduced a new Parallel Computing Library.

Programmers – human as they are – see this as a silver bullet, thinking using such a library will take away all your performance issues without having to know about solving race conditions.

Boy are they wrong. The library helps you, and makes it easier. Easier in the sens of “less hard”.

So here is my friendly warning:

Parallel programming is hard. Live with it.

This apart from another important warning:

Delphi XE7 is the first version where this library is introduced. So expect bugs and more bugs.

This isn’t to say you should not use a library for parallel computing (the OmniThreadLibrary has been around for a reason), just that it is hard to get these right, even for library writers. They often get it right better and faster than rolling your own.

Read the rest of this entry »

Posted in Delphi, Delphi XE7, Development, Software Development | 5 Comments »