Vermutlich gibt es nur irgendwo ein Unicodeproblemchen (falscher Typ bzw. Cast), wo ja in D2009 alles umgebaut wurde.
Schneller Lösungsversuch: Überall in Roberts Code PChar durch PAnsiChar und String durch AnsiString ersetzen.
Und bei verwendeten WinAPIs die XxxA()-Versionen statt der Xxx(). (z.B. ShellExecute zu ShellExecute
A)
Dann ist der Code erstmal wieder so wie früher, in den alten
ANSI-Compilern.
Zum Üben kannst ja auch erstmal das Kostenlose probieren.
https://www.embarcadero.com/de/products/delphi/starter