PChar als Rückgabewert einer
DLL-Funktion kann schnell zu Fehlern führen, da zwar für die Speicheradresse des PChars Speicher reserviert wird, aber nicht für die Zeichenkette, was dazu führen kann, dass ein anderes Programm diesen Speicherbereich allokiert, und damit u.U. "deine" Daten weg sind.
Entweder sorgst du für eine eigene Speicherverwaltung für die Rückgabewerte, oder, was ich empfehlen würde, die übergibst die PChars als Var-Parameter, dann hast du auch immer den korekten Wert in deiner Funktion.