Задумка отличная, щас не где применить но с пол года назад была необходимость а библиотеки небыло.
Думаю что многим пригодиться.
Гы, в коде критическая ошибка (проявляется, когда параллельно используется несколько массивов). Но поскольку никто до сих пор не жаловался, пишу просто комментом, для сведения. В деструкторе должно быть:
for(i = 0; i < GlobalArraySize; i++) { if(GlobalArrayList[i] == this) { free(ID); if(Values) { delete [] Values; Values = NULL; Count = 0; } break; // нужно добавить! (строка 75) } }
Библиотека старая. Для "новых" терминалов с уникодными строками, импорты должны выглядеть так:
#import "GlobalArray.dll" int GlobalArraySet(uchar &ID[], double& Array[], int ArrayCount); int GlobalArrayGet(uchar &ID[], double& Array[], int ArrayCount); int GlobalArraySize(uchar &ID[]); int GlobalArrayDelete(uchar &ID[]); #import
Для конвертации строк можно использовать обертки:
int GlobalArraySetW(string ID, double& Array[], int ArrayCount) { uchar name[]; StringToCharArray(ID, name); return GlobalArraySet(name, Array, ArrayCount); } int GlobalArrayGetW(string ID, double& Array[], int ArrayCount) { uchar name[]; StringToCharArray(ID, name); return GlobalArrayGet(name, Array, ArrayCount); } int GlobalArraySizeW(string ID) { uchar name[]; StringToCharArray(ID, name); return GlobalArraySize(name); } int GlobalArrayDeleteW(string ID) { uchar name[]; StringToCharArray(ID, name); return GlobalArrayDelete(name); }
Для желающих выкладываю версию с целочисленными массивами (можно хранить цены более экономно и с заданной точностью).
Сделайте пожалуйста 64 битную версию для MT5. Выдает ошибку: MT5 MQLx64\MQL5\Libraries\GlobalArray.dll' is not 64-bit version
Сделайте пожалуйста 64 битную версию для MT5. Выдает ошибку: MT5 MQLx64\MQL5\Libraries\GlobalArray.dll' is not 64-bit version
У меня сейчас нет оборудования под это дело. Но есть исходники - может кто-то еще адаптирует.
Вот есть такая новая версия (для массивов типа int) - включает внутреннюю поддержку широких строк и два варианта сборки для x86 и x64 (я проверял пока только x86, если x64 падает - пишите).
#import "GlobalArray-x86.dll" // #import "GlobalArray-x64.dll" int GlobalArraySet(string ID, int& Array[], int ArrayCount); int GlobalArrayGet(string ID, int& Array[], int ArrayCount); int GlobalArraySize(string ID); int GlobalArrayDelete(string ID); #import
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Библиотека GlobalArray - разделяемое хранилище массивов в памяти:
Author: Stanislav Korotky