ИМХО, в одном случае вы работаете со строками, а в длл - с символами.
В mql вы вроде бы хотите подать char s [] [] - и это массив строк ..
но dll настроена на char [] - а это массив символов.
Если не заработает - то как заплатку, могу посоветовать функцию putString(index, string).
type Earr = array [0..5] of string;картину не меняет
косяк где-то именно в индексах. т.к. замена:
string arr[] = {"a", "bb", "ccc", "dddd", "eeee", "fffff"};и:
arr[0] := '000000'; arr[1] := '11111'; arr[2] := '2222'; arr[3] := '333'; arr[4] := '44'; arr[5] := '5';
выдала оджидаемый результат:
11111|333|5|dddd|eeee|fffff
но в идеале должно быть
000000|11111|2222|333|44|5
Судя по примеру DLL на С из папки samples.
Тип MQL-строки предствляется собой структуру (в Делфи структуре,кажется record соответствует), в которой первое поле имеет целочисленный тип и хранит длину строки,
а второе поле указатель на строку символов.
действительно )) изврат какой-то, но вот так:
type MqlStr = record int: Integer; char: string; end; type MString = array [0..5] of MqlStr; function p(var arr: MString): integer; stdcall; begin arr[0].char := '000000'; arr[1].char := '11111'; arr[2].char := '2222'; arr[3].char := '333'; arr[4].char := '44'; arr[5].char := '5'; end;
заработало... ковыряем дальше ))
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
mql:
результат:
и где я дурак? )
про проблему передачи строк в dll читал, видимо она пофиксена, т.к. с обработкой одной строки все ок. с int - массивами тоже ок.