Hallo,
das ist doch einfach so, wenn du ein StrCopy machst wird das an die Stelle im Speicher geschrieben wo data hinzeigt. Bei der Zuweisung data:= veränderst du den Pointer - das bekommt der Aufrufer aber nicht mit. Wenn du das machen willst mußt du ein Zeiger auf PChar oder sowas übergeben.
[edit]
das würde auch ohne
DLL in einem Programm nicht funzen
[/edit]