StringToWideChar kopiert
nur den Inhalt eines String in einen PWideChar.
Den Speicher, auf welchen dieser PWideChar zeigt, den muß vorher aber noch irgendwer reservieren/erstellen
Das Result über einen (var) Parameter rausgeben und nicht als Result.
Oder, verwende besser WideString, anstatt PWideChar.
Im VB sollte es dafür bestimmt auch eine Kapseltung geben, also für die APIs um
SysAllocStringLen/SysFreeString/SysStringLen, welche der WideString im Delphi intern aufruft.