Критическая ошибка при обращении к DLL

 
Проблема заключается в следующем. Мне поставлена задача прогнозировать поведение курса eur/usd различными методами, в частности методом нейронных сетей. Смысл заключается в том, что из метатрейдера берется какой - либо массив данных (например, массив максимальных или минимальных цен), отправляется в dll написанную на Delphi и в результате работы dll получается пронозируемое значение максимальное или минимальной цены на 1 временной период вперед.
Для понимания работы Метаедитора с внешними dll, написал dll на Delphi:
library MinMax;
uses SysUtils, Math, Classes;
 
function Minn(m:array of double):double;stdcall;
 var i:integer;
 begin
 result:=m[0];
 for i:=1 to length(m)-1 do
 if m[i]<result then result:=m[i];
 end;
 
function Maxx(m:array of double):double;stdcall;
 var i:integer;
 begin
 result:=m[0];
 for i:=1 to length(m)-1 do
 if m[i]>result then result:=m[i];
 end;
exports Minn,Maxx;
begin
end.

Далее, в советнике, пишу следующее:
#property copyright "bu"
#property link      "none"
double mas[10];
int i;
#import "MinMax.dll"
double Minn (double arr[]);
double Maxx (double arr[]);
#import
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {for (i=0;i<=9;i++) mas[i]=1.23*i;
 
//----
Print(DoubleToStr(Minn(mas),3)); 
Print(DoubleToStr(Maxx(mas),3));  
//----
   return(0);
  }
//+--------------------

В результате, он должен выдавать минмимальный и максимальный элемент массива mas. Но при обращении к dll возникает ошибка:
There has been a critical error
Time        : 2006.11.01 11:42
Program     : Client Terminal
Version     : 4.00 (build: 195, 30 Jun 2006)
Owner       : Alpari Ltd. (MetaTrader - Alpari)
OS          : Windows XP Professional 5.1 Service Pack 2 (Build 2600)
Processors  : 1, type 586, level 15
Memory      : 523760/234008 kb
Exception   : C0000005
Address     : 0178BD6B
Access Type : read
Access Addr : 09C09C54
 
Registers   : EAX=0112F750 CS=001b EIP=0178BD6B EFLGS=00010206
            : EBX=FFFFFFFF SS=0023 ESP=0177FAD0 EBP=0177FAD8
            : ECX=0112F750 DS=0023 ESI=0114B268 FS=003b
            : EDX=022B6941 ES=0023 EDI=00000000 GS=0000
 
Stack Trace : 0045342E 0045D627 004506EC 7C80B50B
            : 00000000 00000000 00000000 00000000
            : 00000000 00000000 00000000 00000000
            : 00000000 00000000 00000000 00000000
Modules     :
          1 : 00400000 00292000 C:\Program Files\MetaTrader 4\terminal.exe
          2 : 01780000 00012000 C:\Program Files\MetaTrader 4\experts\
                                  libraries\MinMax.dll
          3 : 20000000 002CD000 C:\WINDOWS.0\system32\xpsp2res.dll
          4 : 5B260000 00038000 C:\WINDOWS.0\system32\UxTheme.dll
          5 : 5BD50000 00054000 C:\WINDOWS.0\system32\netapi32.dll
          6 : 61EC0000 0000E000 C:\WINDOWS.0\system32\MFC42LOC.DLL
          7 : 698B0000 00058000 C:\WINDOWS.0\system32\hnetcfg.dll
          8 : 71A30000 00040000 C:\WINDOWS.0\system32\mswsock.dll
          9 : 71A70000 00008000 C:\WINDOWS.0\System32\wshtcpip.dll
         10 : 71A80000 00008000 C:\WINDOWS.0\system32\WS2HELP.dll
         11 : 71A90000 00017000 C:\WINDOWS.0\system32\WS2_32.dll
         12 : 72CD0000 00008000 C:\WINDOWS.0\system32\msacm32.drv
         13 : 72CE0000 00009000 C:\WINDOWS.0\system32\wdmaud.drv
         14 : 73D90000 000FE000 C:\WINDOWS.0\system32\MFC42.DLL
         15 : 75DA0000 00091000 C:\WINDOWS.0\system32\MLANG.dll
         16 : 76350000 00005000 C:\WINDOWS.0\system32\MSIMG32.dll
         17 : 76380000 00049000 C:\WINDOWS.0\system32\comdlg32.dll
         18 : 76B20000 0002E000 C:\WINDOWS.0\system32\WINMM.dll
         19 : 76C20000 0002E000 C:\WINDOWS.0\system32\WINTRUST.dll
         20 : 76C80000 00028000 C:\WINDOWS.0\system32\IMAGEHLP.dll
         21 : 76FC0000 0007F000 C:\WINDOWS.0\system32\CLBCATQ.DLL
         22 : 77040000 000C7000 C:\WINDOWS.0\system32\COMRes.dll
         23 : 77110000 0008C000 C:\WINDOWS.0\system32\OLEAUT32.dll
         24 : 77250000 0009C000 C:\WINDOWS.0\system32\urlmon.dll
         25 : 773C0000 00102000 C:\WINDOWS.0\WinSxS\X86_Microsoft.
                                  Windows.Common-Controls_6595b64144ccf1df_6.
                                  0.2600.2180_x-ww_a84f1ff9\COMCTL32.dll
         26 : 774D0000 0013C000 C:\WINDOWS.0\system32\ole32.dll
         27 : 77910000 000F4000 C:\WINDOWS.0\system32\SETUPAPI.dll
         28 : 77A70000 00095000 C:\WINDOWS.0\system32\CRYPT32.dll
         29 : 77B10000 00012000 C:\WINDOWS.0\system32\MSASN1.dll
         30 : 77BC0000 00007000 C:\WINDOWS.0\system32\midimap.dll
         31 : 77BD0000 00015000 C:\WINDOWS.0\system32\MSACM32.dll
         32 : 77BF0000 00008000 C:\WINDOWS.0\system32\VERSION.dll
         33 : 77C00000 00058000 C:\WINDOWS.0\system32\msvcrt.dll
         34 : 77D30000 00090000 C:\WINDOWS.0\system32\USER32.dll
         35 : 77DC0000 000AC000 C:\WINDOWS.0\system32\ADVAPI32.dll
         36 : 77E70000 00091000 C:\WINDOWS.0\system32\RPCRT4.dll
         37 : 77F10000 00047000 C:\WINDOWS.0\system32\GDI32.dll
         38 : 77F60000 00076000 C:\WINDOWS.0\system32\SHLWAPI.dll
         39 : 77FE0000 00011000 C:\WINDOWS.0\system32\Secur32.dll
         40 : 7C800000 000F6000 C:\WINDOWS.0\system32\kernel32.dll
         41 : 7C900000 000B1000 C:\WINDOWS.0\system32\ntdll.dll
         42 : 7C9C0000 00818000 C:\WINDOWS.0\system32\SHELL32.dll
 
Call stack  :
0178BD58:0013 [0178BD6B] Minn                             
[C:\Program Files\MetaTrader 4\experts\libraries\MinMax.dll]
00452DD0:065E [0045342E] ?CallDllFunction@CExpertInterior
00459AC0:3B67 [0045D627] ?ExecuteStaticAsm@CExpertInterior
004505E0:010C [004506EC] ?RunExpertInt@CExpertInterior
7C80B357:01B4 [7C80B50B] GetModuleFileNameA               
[C:\WINDOWS.0\system32\kernel32.dll]

Большая просьба, скажите где я ошибся? Заранее спасибо.
 
Посмотрите пример исходника DLL в дистрибутиве.
 
Мажет. Нужно объявлять в Delphi какие-то границы масива - типа:
type
  TMass = array[0..9] of Double;
 
//...
 
function Minn(m:TMass):double;stdcall;
Я тоже прошел через нейросети - не работают. Причина - шаблонов-то нету. Но это конечно мое мнение...
 

Itso, спасибо.

 
function Minn(m:array of double):double;stdcall;
var i:integer;
begin
result:=m[0];
for i:=1 to length(m)-1 do
if m[i]<result then result:=m[i];
end;

А как Вы определяете размер массива? Вы уверены, что length(m) возвращает правильное значение? И не вызывает ли вызов функции length креш?
Причина обращения: