Передача массивов и строк в DLL (Delphi)

 
Никак не получается передать массивы и строки в функцию во внешней DLL, написанной на Delphi. Ниже выкладываю пример объявления функции в пользовательском индикаторе и ее объявление в Delphi.
  #import "AdaptiveFunc.dll"
          int JMA_Add(string Symb, int Length, int Phase);
          double JMA(double& Data[], int Count, int Shift, int Index);
  #import



function JMA_Add(Symbol: array of Char; Length, Phase: Integer): Integer; stdcall;
begin
end; 



Аналогичная проблема с массивами. Функция объявлена следующим образом:

function JMA(Data: array of Double; Count, Shift, Index: Integer): Double; stdcall;
begin
end;



Пробовал компилировать с использованием модуля ShareMem и без него. В любом случае MetaTrader вылетает с сообщением об ошибке.