[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 311

 
chief2000:

- Можно ли узнать количество элементов массива в файле? Как вообще избежать лишних действий в этом случае?


FileSize(handle) разделить на размер элемента = кол-во элементов?
 
Figar0:

FileSize(handle) разделить на размер элемента = кол-во элементов?

Это предположение?

Как узнать размер элемента в бинарном файле? Возможно какая-то его часть занята не только элементами?

 
chief2000:

Если задать count слишком большим то образуется большое количество нулевых значений (верно?)

А в документации вроде сказано

Функция возвращает количество фактически прочитанных элементов.
 
chief2000:

Это предположение?

Как узнать размер элемента в бинарном файле? Возможно какая-то его часть занята не только элементами?


Размер элемента зависит от того что вы туда пишите, либо 4 либо 8. Как у Вас выглядит процесс записи?
 
Roger:

А в документации вроде сказано

Если в файле 1000 элементов, а count=20, то фактически будет прочитано 20.

Но что произойдет если count=5000?

Не понятно что они имеют в виду "Перед чтением данных массив должен быть достаточного размера" - проще было бы считывать все элементы в массив по количеству элементов, а потом если надо можно урезать массив и т.д.

 
Figar0:

Размер элемента зависит от того что вы туда пишите, либо 4 либо 8. Как у Вас выглядит процесс записи?

Я использую (запись и чтение это два независимых друг от друга этапа):

 FileWriteArray( int handle, object array[], int start, int count) 
 
chief2000:

Я использую (запись и чтение это два независимых друг от друга этапа):


int FileWriteArray( int handle, object array[], int start, int count)

Функция записывает массив в бинарный файл. Массивы типа int, bool, datetime и color записываются поэлементно как 4-байтовые целые числа. Массивы типа double записываются поэлементно как 8-байтовые числа c плавающей запятой.

Выделил то, что Вам должно быть интересно. Если был записан массив double в файл, то разделив размер файла на 8 вы получите число элементов массива в файле.

 
Figar0:

int FileWriteArray( int handle, object array[], int start, int count)

Функция записывает массив в бинарный файл. Массивы типа int, bool, datetime и color записываются поэлементно как 4-байтовые целые числа. Массивы типа double записываются поэлементно как 8-байтовые числа c плавающей запятой.

Выделил то, что Вам должно быть интересно. Если был записан массив double в файл, то разделив размер файла на 8 вы получите число элементов массива в файле.

Сейчас открыл один сохраненный файл в текстовом просмотрщике - вот как он выглядит:

Похоже что в нем около 50 элементов (там и должно быть примерно столько элементов), но его размер 2432 байт. Видимо он хранит в себе "пустышки".

 
Всем привет. Подскажите пожалуйста. Как в MQL4 в индикаторе в отдельном окне сделать так, что бы гистограмма рисовалась не от ноля, а от заданых значений. Хочу что-бы индикатор Ишимоку в отдельном окне рисовал значения для других таймфреймов.
 
chief2000: Видимо он хранит в себе "пустышки".
Он хранит то что вы в него записали) Чудес тут не бывает.
Причина обращения: