Delphi+MQL Динамический массив

 

Приветствую, господа.

Подскажите, пожалуйста, как правильно из MQL передать динамический массив в DLL на Delphi?

Скрипт:

#import "DLL1.dll"
 int Init(double Arr[]);
#import
//------------------------
double Arr[];

int start()
  {
ArrayResize(Arr,10);

Print("Функция вернула - "+Init(Arr));

return(0);
}

Библиотека:

library DLL1;

uses
  SysUtils,
  Classes;

  type TD1Array = array of double;

function Init(a: TD1Array): Integer; stdcall;
begin
  Result := Length(a);
end;
  exports Init;

{$R *.res}

begin

Возвращается значение: 50856218
При попытке передать массив по указателю - возвращает ноль.

Хотелось бы пример рабочего кода.

 

попробуй по ссылке, через Var;

я не пользовался, сразу скажу

 
через Var валится терминал
 

я дельфи на дельфи не пишу, но я бы

1. сменил имя Init на другое чиста от греха подальше

2. получал в дельфи ссылку на начало массива

3. передавал длину массива вторым параметром функции

 
тогда надо SafeArray пробовать
 
BabyBear >>:

я дельфи на дельфи не пишу, но я бы

1. сменил имя Init на другое чиста от греха подальше

2. получал в дельфи ссылку на начало массива

3. передавал длину массива вторым параметром функции

Вот так и сделал. Мне приходится несколько параметров передавать, т.к. использую многомерные массивы.

 
No_Name писал(а) >>

Вот так и сделал. Мне приходится несколько параметров передавать, т.к. использую многомерные массивы.

А пример кода на дельфи можно посмотреть?

 

А вот, кстати, попроси разработчиков (в "пожеланиях к MQL5") прописать (продокументировать) таки, наконец,

нормальный интерфейс с Делфи с примерами и т.д. Щас для меня неактуально, но помнится пару лет назад я с

аналогичными проблемами тр.. мучался. Мне тогда строку удалось в Делфи протолкнуть только с 278-й попытки :)

Причём совершенно неожиданным способом :) Кароче, с документированием DLL-интерфейса у MetaQuotes

дело обстоит хх.... ну в общем не очень дружественно. Чтоб разобраться с передачей параметров из-в DLL

на сегодняшний день нужно быть спецом конкретно в С/С++ (примеры у них только на С++). Это не есть гуд.

Сорри, что помочь с твоей конкретной проблемой сейчас не могу. По вышеуказанным причинам.

Причина обращения: