Ich muss grad zugeben, dass ich nicht so ganz folgen kann, was du überhaupt erreichen willst, aber bedenke dass (im Bezug auf array of const):
a) ein PChar sich nicht mitten im Array befindet, sondern nur ein Zeiger auf den Anfang des Strings und dieser dann irgendwo im Speicher ist, dieser ist selbst nur insgesamt 4 Byte groß
b) in einem array of const jedes Element ein 8 Byte großes TVarRec ist
c) die im TVarRec übergeben Zeiger offenbar nur im Scope der Funktion gültig sind (siehe obiger Link)
Kannst du nochmal kurz und knapp erklären, warum du den Stackpointer manuell manipulieren musst und was es mit deiner
DLL auf sich hat?