Этот вопрос Вам лучше задать на форуме www.mql4.com
1. Не стоит "stdcall" в объявлении процедуры на Паскале.
2. Динамический массив (array of), если не ошибаюсь, привязан к менеджеру памяти Borland'а, это лучше не использовать.
3. Размеры многомерного массива (за исключением первого) ноебходимо передавать как параметры.
Это должно работать.
В Delphi:
2. Динамический массив (array of), если не ошибаюсь, привязан к менеджеру памяти Borland'а, это лучше не использовать.
3. Размеры многомерного массива (за исключением первого) ноебходимо передавать как параметры.
Это должно работать.
В Delphi:
library SortProcedures; uses ShareMem, SysUtils, Classes; {$R *.res} type DoubleArray2 = array [0..0] of Double; PDoubleArray2 = ^DoubleArray2; procedure ArraySortEx( A: PDoubleArray2; Size: Integer; StartFrom: Integer; SortType: Integer; SecondDim: integer ); stdcall; var F: TextFile; i, j: Integer; begin AssignFile(F, 'C:\array.txt'); Rewrite(F); for i:= StartFrom to StartFrom + Size - 1 do for j:= 0 to 8 do WriteLn( F, FloatToStr( A^[ i * SecondDim + j ] ) ); CloseFile(F); end; exports ArraySortEx; begin end.
в MT:
#import "SortProcedures.dll" void ArraySortEx( double A[][], int Size, int StartFrom, int SortType, int SecondDim ); #import #define SECONDDIM 10 ... double DataArray[100][SECONDDIM]; ArraySortEx( DataArray, 50, 0, MODE_DESCEND, SECONDDIM );
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите пожалуйста, как это сделать ...
Цель - написание своей функции сортировки массива, аналогично
В Delphi пишу библиотеку:
В коде эксперта я делаю Импорт:
и вызываю процедуру так:
При вызове возникает ошибка . Что я делаю неправильно ?