es ist die Aufrufkonvention! Da du keine spezielle angibst wird "register" verwendet und diese gibt es in C nunmal nicht also ist sie auf jeden fall falsch. Bei Register werden die Parameter wie der Name schon sagt über register übergeben. Deine
DLL interpretiert nun das andere was da auf dem Stack liegt als die Paramter aber diese liegen dank register ja gar nicht dort sondern im register. Folglich siehst du Müll. Durch wahl der richtigen Aufrufconvention (per default in c = cdecl) werden die Paramter auch auf den Stack gepackt und somit sind sie auch dort vorhanden wenn die
DLL vom Stack liest.
Deine Declaration ist bis auf die fehlende Convetion richtig. Und der aufruf lautet so:
VFD_SetText(PChar(Editx.Text), PChar(Edity.Text));