Das Problem ist nicht der Record ansich, sondern die Strings dadrin. Diese werden genau wie dynamische Arrays behandelt und somit hast du die gleichen Probleme.
Hier noch was um C++ artige Arrays zu verwenden:
Delphi-Quellcode:
type
PStaticArray = ^TStaticArray;
TStaticArray = Array[0..high(Integer)] of Integer;
Wenn du jetzt in der
DLL einen Pointer vom Type PStaticArray übergibst, sollte es normal funktionieren:
Delphi-Quellcode:
procedure Test(DynArray: PStaticArray);
begin
DynArray^[0] ...
end;
P.S: Natürlich darfst du keine Variable vom Typ TStaticArray anlegen, da dann der Arbeitsspeicher voll ist.
Jetzt bekommst du nur noch Probleme mit den Strings, aber wenn die in Fortran genauso gehandt werden wie in C++, dann versuche doch einfach mal im record statt String PChar.