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 ‘Development’ Category

Kriscode.Hint := ‘Kris”s coding blog’: Lazarus IDE on ARM Ubuntu (Raspberry Pi, Ubuntu Touch, etc)

Posted by jpluimers on 2017/11/28

Interesting writeup as Lazarus and Free Pascal have come a long way: [WayBackKriscode.Hint := ‘Kris”s coding blog’: Lazarus IDE on ARM Ubuntu (Raspberry Pi, Ubuntu Touch, etc)

Via:

–jeroen

Posted in Development, FreePascal, Lazarus, Pascal, Software Development | Leave a Comment »

Implementing Memoize in Delphi 2009 – Community Blogs – Embarcadero Community

Posted by jpluimers on 2017/11/28

I think it was Stefan Glienke who pointed me at the Memoisation pattern: [WayBackImplementing Memoize in Delphi 2009 – Community Blogs – Embarcadero Community

Or in laymans terms: caching with generic functions and dictionaries.

Note the Archive.is link is way better readable than the WayBack link, so below I’ve saved parts only in Archive.is.

It points to two other interesting reads:

Later I found it was indeed Stefan who pointed me to the above links and also came up with this very small Memoisation example which is based on Spring4D:

and guess what? because we have interfaced based dictionary this is super easy, let me just hack an example, 5mins6:52 PM

function BuildCache: Tfunc<string,string>;
var
 cache: IDictionary<string,string>;
begin
 cache := TCollections.CreateDictionary<string,string>;
 Result :=
   function(s: string): string
   begin
     if not cache.TryGetValue(s, Result) then
     begin
       Sleep(1000); // hard work! ;)
       Result := ReverseString(s);
       cache.Add(s, Result);
     end;
   end;
end;

Since the returned anonymous method captures the dictionary its kept inside and once the anonymous method goes out of scope the dictionary is also cleaned, want to reset the cache? Just create a new one and throw the old one away.

Need thread safety? just add

System.TMonitoy.Enter/Leave(cache.AsObject);

–jeroen

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

Use operator overloading for classes with non-ARC compiler · GitHub

Posted by jpluimers on 2017/11/23

[WayBackUse operator overloading for classes with non-ARC compiler · GitHub

The trick: do not use class operator but use class function &&op_ with the special operator name in the table referenced below. Just follow the bulleted example links to get an idea.

Bonus: it works on class helper constructs as well.

Officially this unsupported and with the non-ARC compiler you will have a risk of memory leaks.

But it’s so much fun as these links prove:

The usual operator gotchas apply here as well: Delphi operator overloading: table of operators, names, and some notes on usage and ‘glitches’.

The operators you could try: [WayBackOperator Overloading (Delphi) – RAD Studio

Oh, this thread needs some change now: [WayBackList of Delphi language features and version in which they were introduced/deprecated – Stack Overflow

–jeroen

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

Capitalization Conventions – more than Canceled not Cancelled

Posted by jpluimers on 2017/11/23

[WayBackCapitalization Conventions

Posted in .NET, Delphi, Development, Software Development | 1 Comment »

Say NO to Venn Diagrams When Explaining JOINs – Java, SQL and jOOQ.

Posted by jpluimers on 2017/11/22

Interesting thought especially for cross-joins [WayBackSay NO to Venn Diagrams When Explaining JOINs – Java, SQL and jOOQ.

–jeroen

Via [WayBack“Say NO to Venn Diagrams When Explaining JOINs” – and [WayBack] “Say NO to Venn Diagrams When Explaining JOINs” – – Kristian Köhntopp – Google+

 

Posted in Database Development, Development, SQL | Leave a Comment »

check if network connection is permanent

Posted by jpluimers on 2017/11/22

Thanks Uwe for the below code!

I was in a situation of a batch file running from a Task Scheduler that got broken because the user suddenly turned on persistent network connections.

So I needed to check if a shared drive-letter was indeed persistent or not and act accordingly.

The below code helped me merging the batch file with the Delphi application it would run in the background anyway.

It’s way better than checking of the global “persistence” flag for new connections has been set in the registry: [WayBackSaveConnections flag at HKCU\Software\Microsoft\Windows NT\CurrentVersion\Network\Persistent Connections (which is reflected both in the Windows UI and settable via net use /Persistent).

Source: check if network connection is permanent

Via: [WayBack] Anyone who can share how one can query if a drive letter mapping to a share is persistent across logon sessions? (yes, this is Windows, I know) – Jeroen Wiert Pluimers – Google+

–jeroen

Read the rest of this entry »

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

OpenBSD on PC Engines APU2 | Hacker News

Posted by jpluimers on 2017/11/21

Via [WayBackOpenBSD on PC Engines APU2 | Hacker News and [WayBackIlya S – Google+ commenting at [WayBack] I am thinking about moving to BSD as my main OS – Joe C. Hecht – Google+:

Just in case I want to build my own router on PC Engines APU2 hardware: installation instructions at [Wayback/Archive] elad/openbsd-apu2: OpenBSD on the APU2

–jeroen

Posted in APU, Development, Hardware, Hardware Development, Internet, Network-and-equipment, Power User, routers | Leave a Comment »

Delphi history: No, dynamic arrays do not support a non-zero lower bound, but what if you want them? – via Stack Overflow

Posted by jpluimers on 2017/11/21

A post of some older Delphi stuff I did in the past just in case need it again.

David Heffernan found the documentation for this: [WayBackStructured Types (Delphi): Dynamic Arrays – RAD Studio

Since I needed a dynamic array structure supporting a non-zero lower bound, I was glad he also provided an answer with a data structure that does provide a non-zero lower bound.

For my own reference I’ve put his answers and questions below (as it’s way easier to search my blog than the complete internet) and my own implementation:

Read the rest of this entry »

Posted in Delphi, Development, History, Software Development | 10 Comments »

Hi! how to hide a property in object inspector? i have my custom components …

Posted by jpluimers on 2017/11/16

For my link archive:

Some quotes

–jeroen

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

Happy 60th birthday, Fortran

Posted by jpluimers on 2017/11/15

I remember a FORTRAN IV (or was it 66?) course during my chemistry studies at the end of the 1980s. Luckily, the VAX/VMS version (not sure which one, it ran on a VAX 11/750) where we had to program on came with an extended FORTRAN 77 compiler even supporting 132 columns and other nice features.

My favourite program was about an algorithm to assemble 3 tables (one relating atom numbers and their valencies, a second with atom-atom distances, a third with 3-D atom positions) into a chemical compound indicating any rings. I implemented my own recursion with stacks citing a Dire Straits song with “and when you finally reappear, at the place where you came in…”.

Later I ported this to a PC reviewing the Microsoft FORTRAN 5.1 compiler for the Dutch PCM (Personal Computer Magazine). Recently I learned Lahey had a big role in the Fortran.NET compiler.

This year FORTRAN turned 60 years old and it is still in used, though not as heavily as a few decades ago.

The Fortran compiler, introduced in April 1957, was the first optimizing compiler, and it paved the way for many technical computing applications over the years. What Cobol did for business computing, Fortran did for scientific computing. Fortran may be approaching retirement age, but that doesn’t mean it’s about to stop working. This year marks the 60th anniversary of the first Fortran (then styled “FORTRAN,” for “FORmula TRANslation”) release.

Source: [WayBack] Happy 60th birthday, Fortran.

Via [Archive.is] Happy 60th birthday, Fortran – ThisIsWhyICode – Google+

Historic references:

–jeroen

Read the rest of this entry »

Posted in Development, Fortran, Software Development | 1 Comment »