Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1118
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите пожалуйста возможные развития.
Есть массив[100], также сохранен бинарный фаил размером [1000], как возвратить массив бинарного файла последние 100 значений. Универсально что нибудь есть? ТО опять 12 часов проковырялся и ничего.
Подскажите пожалуйста возможные развития.
Есть массив[100], также сохранен бинарный фаил размером [1000], как возвратить массив бинарного файла последние 100 значений. Универсально что нибудь есть? ТО опять 12 часов проковырялся и ничего.
Если я правильно помню, то в mql4 было написано, что если count = WHOLE_ARRAY или значение превышающее количество элементов массива то записывается весь массив до конца. И не о каком запасе не говорилось. То-есть не о какой 1000 речи и быть не может.
Проверить можно так: Посчитать сколько каких значений записывается и какого размера получается файл.
Если я правильно помню, то в mql4 было написано, что если count = WHOLE_ARRAY или значение превышающее количество элементов массива то записывается весь массив до конца. И не о каком запасе не говорилось. То-есть не о какой 1000 речи и быть не может.
Проверить можно так: Посчитать сколько каких значений записывается и какого размера получается файл.
не я о том, что после записи массива в бинар, появляется через момент времени, новые данные, их я продолжаю записывать в бинар через новый одомерный массив(= размерности столбца первичного массива), каждый раз в конец файла, по новому j столбцу
далее появляется необходимость снять с бинара данные равные по количеству индекса исходного массива, онный был перенесен в бинар в первой интерации. Но снимаем таким образом чтоб последние данные попали в этот ограниченный массив, так как бинар больше первичного массива, из за добавления вторичных строк. Вторичные строки должны попасть в считываемый массив, а первые строки в бинаре должны оказаться в не зоны
не я о том, что после записи массива в бинар, появляется через момент времени, новые данные, их я продолжаю записывать в бинар через новый одомерный массив(= размерности столбца первичного массива), каждый раз в конец файла, по новому j столбцу
далее появляется необходимость снять с бинара данные равные по количеству индекса исходного массива, онный был перенесен в бинар в первой интерации. Но снимаем таким образом чтоб последние данные попали в этот ограниченный массив, так как бинар больше первичного массива, из за добавления вторичных строк.
Тогда не надо назначать размерность массива перед чтением. Если-же нужны не первые данные, то надо вычислять размер в байтах и сдвигать на нужное количество стартовую позицию для чтения.
Вот то и вопрос как рассчитать байты
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
Вот то и вопрос как рассчитать байты
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
Если данные типа double то раздели размер файла на количество занимаемых байт числом типа double то-есть на 8
Если данные типа double то раздели размер файла на количество занимаемых байт числом типа double то-есть на 8
Через FileFindFirst?
или просто проссумировать каждую новую строчку в байтах
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
Через FileFindFirst?
Через FileFindFirst?
или просто проссумировать каждую новую строчку в байтах
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
Зря ты правишь свой пост после ответа на него...
Не так. Перед чтением массива определяешь его размер file_size = FileSize(handle); и делишь на занимаемую память типом данных, то-есть для double на 8. Получаешь количество чисел в файле. Если массив двухмерный, то соответственно записей в файле ровно в 2 раза меньше. И получаешь на сколько байт надо сместиться для чтения с нужной строки.
Зря ты правишь свой пост после ответа на него...
Не так. Перед чтением массива определяешь его размер file_size = FileSize(handle); и делишь на занимаемую память типом данных, то-есть для double на 8. Получаешь количество чисел в файле. Если массив двухмерный, то соответственно записей в файле ровно в 2 раза меньше. И получаешь на сколько байт надо сместиться для чтения с нужной строки.