Sollte man das StrPas umgehen, da es als veraltet bezeichnet wird?
Das kann ich dir gar nicht genau sagen. Theoretisch kannst du an dieser Stelle auch einfach nur PWideChar(@LinkName[0]) schreiben denke ich.
Wieso funktioniert eigentlich die Übergabe von @LinkName[0], ohne dass der Compiler die formale Typdeklaration moniert? (Auf @LinkName[0] muss man auch erstmal kommen)
Wenn du einen Pointer Typen an eine Funktion übergibst, es es dem Compiler vollkommen egal, ob du jetzt ein PDWord, ein PInt64 oder einen einen PWideChar (@LinkName[0]) verwendest. Da musst du selbst dafür sorgen, dass die Logik korrekt ist. Du hattest LinkName im Funktionsprototypen ursprünglich als
var Parameter deklariert. Intern ist das eigentlich nur syntaktischer Zucker für Pointer, die als
inout Parameter genutzt werden, aber in der Praxis kontrolliert Delphi hier ganz penibel die Typen, die du übergibst.