В теле ф-ии создаешь форму, когда форма вернет ShowModal = mrOk выделяешь память, заносишь туда данные с формы и возвращаешь указатель на память с данными.
Код:
function SomeFunction(arguments:pointer):pointer;stdcall;
....
В программе
Код:
var SomeFunction:function(arguments:pointer):pointer;stdcall;
...
procedure TFrmMain.Button1Click(sender:tobject);
var hDll:thandle;
begin
hDll := LoadLibraryA(PChar('DllName.dll'));
//обработчик ошибки загрузки
SomeFunction := GetProcAddressA(hDll,PChar('SomeFunction'));
//далее вызываешь саму функцию
end;