himitsus Weg ist an sich schon der richtige.
Alter Mann, du gehst den C Weg und allokierst Speicher für Strings, was in Delphi ja garnicht notwendig ist. Man arbeitet solange mit dem Typ String bis eine
WinAPI ein PWideChar will und konvertiert ihn dann dahin.
Ich hatte auch schon einige Probleme mit der Formatfunktion, wenn man den Wert direkt in PWideChar wandelt. Deshalb sollte man den Rückgabewert in eine Stringvariable speichern und diese dann an die
WinAPI übergeben.
StrAlloc ist übrigens aus Kompatibilitätsgründen vorhanden und sollte nicht mehr verwendet werden.
JwaWindows und Windows sollte man nicht gleichzeitig verwenden, da die Typen nicht kompatibel/austauschbar für Delphi sind.