Delphi 10.4.2 Sydney Webinar 18 maart 2021

Delphi 10.4.2 build native apps fasterSamen met Barnsten nemen we op donderdag 18 maart 2021 om 15:00 een praktische kijk naar de hoe je de nieuwste features van Delphi 10.4.2 Sydney kunt toepassen.

We gaan hier dieper in op meerdere onderwerpen; zoals MSIX support en hoe dit werkt aan de binnenkant, via een TNumberBox wisselkoersen demo met live koersen van de ECB. Hoe je de nieuwe EdgeViewer2 support in een applicatie inbouwt en volledig embedded deployed als onderdeel van een MSIX package. Wat de aandachtspunten zijn voor Android 11 compatibiliteit. Verder kijken we ook nog nader naar de updates in de LSP met praktische tips en nog wel meer onderwerpen. Vergeet ook niet de Q & A aan het einde, waarin je al je (Delphi) vragen kunt stellen.

Meer info en inschrijven kan met deze link::

Webinar: Praktische kijk op de nieuwe Delphi 10.4.2 Sydney versie

Online Delphi FireMonkey en Android Power training – 4 en 5 maart 2021

Altijd al een App willen maken in Delphi? Schrijf je dan nog deze maand in voor de online Delphi FireMonkey en Android Power training.

In de eerste dag, op 4 maart, behandelen we het FireMonkey framework. De aanpassingen ten opzichte van het VCL framework en de best use scenario’s voor het maken van een nieuwe FireMonkey desktop application. Denk aan visualisatie, het gebruik van livebindings (loose coupling) en asynchrone execution om de GUI snel en responsive te houden.

In de tweede dag, op 5 maart, gaan we over naar mobile development. Een deel van de training is algemeen voor Delphi mobile App development, met als focus Android development. Hiervoor is een voor Delphi development geschikt Android device noodzakelijk, zie hier voor de requirements. Download ook eventueel vooraf aan de training de benodigde USB debug drivers voor je Android device. In de training behandelen we mobile templates, local storage, maar ook web services en interactie met Java en het nieuwe permissions framework van Android.

De training kan gevolgd worden met Delphi 10.4 Professional of Community Edition. Voor Android 11 compatibility raden we de laatste versie aan van Delphi 10.4. In een klein deel van de training is er een keuze tussen Delphi 10.4 Enterprise code of Delphi 10.4 Professional code.

De training zelf doen we online in Microsoft Teams. Je kunt deelnemen vanuit een web browser (Edge of Chrome), maar je kunt ook de Microsoft Teams client installeren voor meer mogelijkheden. Tijdens de training is ook 1 op 1 overleg met de trainer mogelijk. Delen van video is gezellig, maar uiteraard niet verplicht. Verder ontvangt u per post een hardcopy van het trainingsmateriaal.

Inschrijven kan tot en met 28 februari:
https://www.barnsten.com/nl/product-categorie/embarcadero-tools-nl/trainingen-nl/

Delphi GitHub repositories

Searching for Delphi repositories on GitHub is made more difficult than it should be.

GitHub has no language Delphi

What? No Delphi?

The main reason is that Delphi is not listed as a language. OK, Delphi is a development environment, not a language, fair enough. But what about Object pascal?

GitHub has no language Object Pascal

GitHub has no language “Object Pascal”

Why is Object Pascal is not listed?

With a little more research you can find out there are language items for Pascal and Component Pascal. But if you search for language:”Component Pascal” its kind of a dead end with just around 900 entries.

GitHub search for language:"Component Pascal"

search for language Component Pascal has some results

Some of these are relevant for Delphi, but some are not. Oh, but that’s logical, you might think, because Component Pascal is not meant to refer to Delphi. And you’re right, Component Pascal is officially the name for a language based on the Oberon-2 language which was originally based on, but incompatible with, Pascal.

Then you decide to just do a manual search in GitHub on language:Delphi.

GitHub maps a search for language Delphi to Component Pascal

language:Delphi “Helpfully” re-routed to Component Pascal

Which doesn’t get you very far, because GitHub “helpfully” re-routes your language:Delphi search to the Component Pascal results.

So then you decide to just search for language:Pascal and yes, then the results are there.

GitHub search on language Pascal

No drill down for Languages if you search for language:Pascal

But not in the best format. Why? Because you cannot drill down with the Languages list box on the left side for repositories in other Languages that have something to do with Delphi. So using this path, you would probably never find this Delphi de-compiler that’s written in C++.

So what to do?

Luckily there is a workaround. We just need to do a search for Delphi in the readme files that accompany each repository. Then we get this result.

GitHub search Delphi in readme

search for Delphi in readme files

These results are more relevant, but even better; we can now drill down using the Languages box on the left bottom of the screen.

GitHub readme Delphi drill down Pascal

drill down using languages based on Delphi readme search

That’s more like it!

Besides Heidi SQL, Python4Delphi and MARS we now also find a handy repository with a curated list of many relevant Delphi repositories.

GitHub curated list of Delphi libraries

a curated list of Delphi libraries

So there you have it.

Just go to GitHub Advanced Search and type Delphi in:readme and you’ll find what you need.

GitHub Search Delphi in:readme

use Delphi in:readme in GitHub Advanced Search

Keep in mind, GitHub is not the only location for Delphi repositories. For instance Spring4D only has a placeholder on GitHub, but can be found over here.

Delphi 10.4.1 Apple Platforms Patch (December update)

De update patch voor de nieuwe Apple Platforms is ververst en opnieuw beschikbaar. Eerder was in november al de patch met support voor XCode 12, iOS 14 en macOS Big Sur uitgekomen. Deze december patch vervangt deze en fixt enkele bugs in de DataSnap ClientDataSet en in DBX en lost tevens enkele linker errors op als je build naar iOS14.

Beschikbaar via GetIt en als losse download. Let wel dat je de download hebt vanaf 18 december. Mocht je eerder op 16 december een download hebben gedaan, update deze dan met de versie van 18 december, anders heb je een oude versie van PAServer. Dit is in de zip eenvoudig te herkennen door de file datums van na 16 december.

Downloaden van deze patch via het registered users portal:
https://my.embarcadero.com/

Spice up your Delphi application with online image content – 8 december 09:15

Move beyond the confines of your application and add online content in
just 50 lines of code.

Join us with Alister Christie from New Zealand for this live Q&A and webinar on scraping the web for live and always up-to-date art work in your Delphi application.

In this session Alister shows you how to spice up your application with image content scraped from the WikiMedia website. Technologies used in this session are NetHTTP, JSON, Regular Expressions and XML storage with the ClientDataSet. At the end Alister goes down the rabbithole to add additional compatibility with a missing JPEG format in the VCL. Just for fun!

After this workshop you can easily use the code to create your own web crawler or scraper to add online content to your application. Please make sure the media you scrape can be used freely.

Register here:
https://www.barnsten.com/spice-up-your-delphi-application/

The Q&A at 09:45 will be handled by Alister (for him its 21:45), so this is a chance to meet him live online. I’ll be there as well.

DelphiCon 2020 – 17 – 19 november

DelphiCon 2020Volgende week start de DelphiCon 2020 van 17 tot en met 19 november. Een online conference alleen over Delphi en niets anders dan Delphi.

Met ondermeer een sessie van Alister Christie met code en demos uit zijn boek Code Faster in Delphi. Ook een mooie sessie van Andrea Magni over zijn boek Delphi GUI Programming with FireMonkey. Ik kijk ook uit naar de sessie van Primož Gabrijelcic over zijn boek High Performance Delphi. Het is heerlijk om goed en mooi leesvoer te hebben over Delphi.

Heb jij of je klant net een 4K scherm gekocht? Neem dan ook even een kijkje bij de sessie van Ray Konopka over Leveraging High DPI in VCL Applications.

En mocht je ooit een keer een bug introduceren in je code dan kun je zeker de sessie van Bob Swart waarderen over Real-world CodeSite Logging Techniques.

Het volledige programma vindt je hier:
https://delphicon.embarcadero.com/schedule/

Vergeet ook niet de Delphi 10.4.1. compiler en LSP patch te installeren die vandaag is uitgekomen. Hierin wordt een bug gefixt in record alignment die je lastig kan vallen.

Code Faster in Delphi by Alister Christie

Code Faster in Delphi by Alister ChristieHave you ever wondered what an experienced Delphi developer knows about how to code in Delphi? Particularly how to code FASTER in Delphi? This book has you covered!

Alister kindly invited me to read pre-press versions of this book and having seen it evolve into what it is now, I can only say it’s absolutely worth your time. In fact, you’ll probably regain the time spent reading this book in the first week after, when you apply its knowledge. It’s probably a Timey-Wimey kind of thing where you gain more time by using some time.

Alister Christie is a writer, but also an experienced Delphi developer and trainer and overall good guy. When we visited his family home in New Zealand his enthusiasm and vibrant energy combined with his kindness made it a very special experience for us.

For me this book is now a staple, a standard book every Delphi developer should have. Read it, I’m sure you’ll agree.

Delphi 10 VCL Essentials training – 28-30 oktober 2020

Eind volgende maand staat opnieuw een driedaagse Delphi 10 VCL Essentials training in de planning, op woensdag 28 oktober tot en met vriidag 30 oktober in de mooie locatie van het Jachthuis Beukenrode in Doorn.

De training is bedoeld voor coders en developers met enige ervaring in programmeren in  Delphi of een andere programmeeromgeving die graag snel en goed Delphi willen leren of beter leren kennen. We beginnen met een overview van alles wat je met Delphi en de VCL kunt, maar gaan ook in op details als de event-loop en de interne werking van de VCL (visual component library) en RTL (run-time library). In de driedaagse training leer je je Windows applicaties maken met Delphi, gebruik maken van een database via FireDAC. Verder in-memory en local datasets, debugging, de RTL, Windows-10 styling en zelfs wat generics.

Inschrijven en details van de agenda van de trainingen vindt je hier:
https://www.barnsten.com/nl/product-categorie/rad-studio-tools-nl/trainingen/

5 quick tips for removing ARC in Delphi Sydney

With the release of version 10.4 Sydney, Delphi has officially moved away from the ARC memory model in the mobile compilers. This was announced in 2018, there is some nice background info in this blog post by Marco Cantu.

So how do you do a quick check if your Delphi mobile code has ARC dependencies you should fix?

Tip #1 – Run on Windows with ReportMemoryLeaksOnShutDown := True

This instructs the FastMM memory manager to report memory leaks. Simply run your iOS or Android App on Windows (with the Windows Platform active), perform the usual actions an end-user would perform and close the application. Any memory leaks will be reported and should be fixed.

In your application source code add this line:

 
begin
  ReportMemoryLeaksOnShutdown := True;
  Application.Initialize;
  Application.CreateForm(TFormMain, FormMain);
  Application.Run;
end.

If you have a memory leak a message like this will popup after closing the application.

Unexpected Memory Leak

Tip #2 –  Search | Find In Files (Shift-Ctrl-F) for any “.Create” code

Most ARC (Automatic reference Counting) code should be changed to CTFF (Create Try Finally Free). Just check if there is a try-finally and a free directly after the .Create. Not all Create code needs a try-finally-free, as some instances are owned by their container, for instance in a TObjectList<T> that may take ownership of the instantiated object.

Change this ARC code

 
procedure DoSpellCheck;
var 
  Harry: TWizard;
begin
  Harry := TWizard.Create; 
  Harry.SpellCheck;
end; 

To this CTFF code

 
procedure DoSpellCheck; 
var 
  Harry: TWizard; 
begin
  Harry := TWizard.Create;
  try
    Harry.SpellCheck;
  finally
    Harry.Free;
  end;
end;

Some code can not be easily changed from ARC to CTFF, mostly due to the Free needing to be called at some unspecified time in the future, which for instance is common in multi-threaded code. If this applies to you then you could take a look at smart pointers in Spring4D using Shared.Make(TObject.Create), or take a look at the new custom managed records which where introduced in Delphi 10.4. Both options enable you to use ARC style freeing of resources, within the now default unified memory model.

Tip #3 – Use a tool to check for memory leaks

The code in tip #1 uses the built-in FastMM4 and is free. There is also a dual-license newer version FastMM5, both are however limited to Windows. Luckily there is a nice and simple free library called leakcheck that does this for all Delphi platforms. Alternatively, if detecting leaks in Windows only is preferred, the commercial DeLeaker has a lot of options and easy overview of memory leaks. A nice summary of these tools and more can be found in the blog post of Wagner Landgraf.

Tip #4 – Check for platform specific code

The short check for memory leaks under the Windows platform will skip platform specific code for Android and iOS, so you should check for compiler directive based platform dependencies {$IFDEF ANDROID}, {$IFDEF IOS}, but also for run-time dependencies like with TOSVersion.TPlatform.pfiOS and TOSVersion.TPlatform.pfAndroid. Note that the compiler directive AUTOREFCOUNT has been removed in Delphi 10.4, but its entirely possible you used this in your own code to check for ARC availablity.

Tip 5 – Check for weak references

These are mostly introduced to enable multiple references to instances without affecting reference count in combination with ARC. Do not just remove them, they can also be used for other reference counted data structures which may not have anything to do with ARC perse.

Even without ARC, reference counting still exists in Delphi. The compiler will still automagically reference count interfaces and strings. The same mechanism is also used for the new custom managed records.