FILE_READ | 1 | Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ |
FILE_WRITE | 2 | Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ |
FILE_BIN | 4 | Двоичный режим чтения-записи (без преобразования из строки и в строку). Флаг используется при открытии файлов (FileOpen()) |
FILE_CSV | 8 | Файл типа csv (все записанные элементы преобразуются к строкам соответствующего типа, unicode или ansi, и разделяются разделителем). Флаг используется при открытии файлов (FileOpen()) |
FILE_TXT | 16 | Простой текстовый файл (тот же csv, однако разделитель не принимается во внимание). Флаг используется при открытии файлов (FileOpen()) |
FILE_ANSI | 32 | Строки типа ANSI (однобайтовые символы). Флаг используется при открытии файлов (FileOpen()) |
FILE_UNICODE | 64 | Строки типа UNICODE (двухбайтовые символы). Флаг используется при открытии файлов (FileOpen()) |
FILE_SHARE_READ | 128 | Совместный доступ по чтению со стороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытии файла необходимости указать FILE_WRITE и/или флаг FILE_READ |
FILE_SHARE_WRITE | 256 | Совместный доступ по записи со стороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытии файла необходимости указать FILE_WRITE и/или флаг FILE_READ |
FILE_REWRITE | 512 | Возможность перезаписывания файла функциями FileCopy() и FileMove(). Файл должен существовать или открываться для записи. В противном случае файл открыт не будет |
FILE_COMMON | 4096 | Расположение файла в общей папке всех клиентских терминалов \Terminal\Common\Files. Флаг используется при открытии файлов (FileOpen()), копировании файлов (FileCopy(), FileMove()) и проверке существования файлов (FileIsExist()) |
После устранения этой ошибки можно будет думать дальше.
Цитата из документации
FileWriteArray
Записывает в файл типа BIN массивы любых типов, кроме строковых (может быть массив структур, не содержащих строки и динамические массивы).
Согласен. Не всегда читаю документацию до последней буквы. Точней сказать крайне редко дочитываю до конца.
Может резерв массива даёт такой эффект?
ArrayResize(arr_1,p1,100);
Может резерв массива даёт такой эффект?
это массив из которого записывается в файл(проверил ничего не меняется), в данном примере функция FileWriteArray показывает что записано в фаил 15 элементов , функция FileReadArray показывает что считано из файла 15 элементов, это значит(скорее всего) что там внутри что то работает не правильно, раз массив создается не верной величины, [13][3] = 39 вместо [5][3] = 15
вот файл
Записывает в файл типа BIN массивы любых типов, кроме строковых (может быть массив структур, не содержащих строки и динамические массивы).
Читает массивы любых типов, кроме строковых (может быть массив структур, не содержащих строки и динамические массивы), из бинарного файла с текущего положения файлового указателя.
Для многомерных может правильней использовать ArrayRange
Я уже поумничал в этом направлении.
Записывает в файл типа BIN массивы любых типов, кроме строковых (может быть массив структур, не содержащих строки и динамические массивы).
Примечание Строковый массив может записываться только в файл типа TXT.
Читает массивы любых типов, кроме строковых (может быть массив структур, не содержащих строки и динамические массивы), из бинарного файла с текущего положения файлового указателя.
Примечание Строковый массив может читаться только из файла типа TXT.
Для многомерных может правильней использовать ArrayRange
куда и как его воткнуть? и зачем?
это массив из которого записывается в файл(проверил ничего не меняется), в данном примере функция FileWriteArray показывает что записано в фаил 15 элементов , функция FileReadArray показывает что считано из файла 15 элементов, это значит(скорее всего) что там внутри что то работает не правильно, раз массив создается не верной величины, [13][3] = 39 вместо [5][3] = 15
вот файл
Если нужно просто обойти проблему, то можно ещё перед чтением файла изменить размер массива. И ещё попробовать явно указать количество читаемых элементов.
uint FileReadArray( int file_handle, // handle файла void& array[], // массив для записи int start=0, // стартовая позиция для записи в массив int count=WHOLE_ARRAY // сколько читать );
Если-же разобраться в проблеме, то писать в СД. Проблема не только в этом случае. Ещё есть проблема размера записанных и читаемых данных типа double не всегда составляет 8 байт если данные писались в .csv или .txt файл. А если писать в .bin то всё чётко совпадает и можно смело перемещать курсор на нужную строку.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
создаю динамический многомерный строковый массив например [5][3] (15 элементов) записываю его в файл
читаю из файла (15 элементов) - смотрю массив, там 39 элементов, что я делаю не так?