Если в файле 1000 элементов, а count=20, то фактически будет прочитано 20.
Но что произойдет если count=5000?
Не понятно что они имеют в виду "Перед чтением данных массив должен быть достаточного размера" - проще было бы считывать все элементы в массив по количеству элементов, а потом если надо можно урезать массив и т.д.
Я использую (запись и чтение это два независимых друг от друга этапа):
int FileWriteArray(
int handle, object array[], int start, int count)
Функция записывает массив в бинарный файл. Массивы типа int, bool, datetime и color записываются поэлементно как 4-байтовые целые числа. Массивы типа double записываются поэлементно как 8-байтовые числа c плавающей запятой.
Выделил то, что Вам должно быть интересно. Если был записан массив double в файл, то разделив размер файла на 8 вы получите число элементов массива в файле.
Функция записывает массив в бинарный файл. Массивы типа int, bool, datetime и color записываются поэлементно как 4-байтовые целые числа. Массивы типа double записываются поэлементно как 8-байтовые числа c плавающей запятой.
Выделил то, что Вам должно быть интересно. Если был записан массив double в файл, то разделив размер файла на 8 вы получите число элементов массива в файле.
Сейчас открыл один сохраненный файл в текстовом просмотрщике - вот как он выглядит:
Похоже что в нем около 50 элементов (там и должно быть примерно столько элементов), но его размер 2432 байт. Видимо он хранит в себе "пустышки".
Всем привет. Подскажите пожалуйста. Как в MQL4 в индикаторе в отдельном окне сделать так, что бы гистограмма рисовалась не от ноля, а от заданых значений. Хочу что-бы индикатор Ишимоку в отдельном окне рисовал значения для других таймфреймов.
- Можно ли узнать количество элементов массива в файле? Как вообще избежать лишних действий в этом случае?
FileSize(handle) разделить на размер элемента = кол-во элементов?
FileSize(handle) разделить на размер элемента = кол-во элементов?
Это предположение?
Как узнать размер элемента в бинарном файле? Возможно какая-то его часть занята не только элементами?
Если задать count слишком большим то образуется большое количество нулевых значений (верно?)
А в документации вроде сказано
Это предположение?
Как узнать размер элемента в бинарном файле? Возможно какая-то его часть занята не только элементами?
Размер элемента зависит от того что вы туда пишите, либо 4 либо 8. Как у Вас выглядит процесс записи?
А в документации вроде сказано
Если в файле 1000 элементов, а count=20, то фактически будет прочитано 20.
Но что произойдет если count=5000?
Не понятно что они имеют в виду "Перед чтением данных массив должен быть достаточного размера" - проще было бы считывать все элементы в массив по количеству элементов, а потом если надо можно урезать массив и т.д.
Размер элемента зависит от того что вы туда пишите, либо 4 либо 8. Как у Вас выглядит процесс записи?
Я использую (запись и чтение это два независимых друг от друга этапа):
Я использую (запись и чтение это два независимых друг от друга этапа):
Функция записывает массив в бинарный файл. Массивы типа int, bool, datetime и color записываются поэлементно как 4-байтовые целые числа. Массивы типа double записываются поэлементно как 8-байтовые числа c плавающей запятой.
Выделил то, что Вам должно быть интересно. Если был записан массив double в файл, то разделив размер файла на 8 вы получите число элементов массива в файле.
Функция записывает массив в бинарный файл. Массивы типа int, bool, datetime и color записываются поэлементно как 4-байтовые целые числа. Массивы типа double записываются поэлементно как 8-байтовые числа c плавающей запятой.
Выделил то, что Вам должно быть интересно. Если был записан массив double в файл, то разделив размер файла на 8 вы получите число элементов массива в файле.
Сейчас открыл один сохраненный файл в текстовом просмотрщике - вот как он выглядит:
Похоже что в нем около 50 элементов (там и должно быть примерно столько элементов), но его размер 2432 байт. Видимо он хранит в себе "пустышки".