Проблема считывания массива с файла, кто с таким сталкивался???

 

Всем привет, уже 3 день не могу понять что не так, прошу Вашей помощи :)

Я записал массив в файл .BIN ( данные массива должны отображать точки для построения линий индикатора в chart_window), сам файл создан на 4-Digits брокере и прекрасно работает в своём "родном" терминале. Но если я переставлю тот-же файл в любой другой терминал 4-Digits брокера (даже того же самого только другой терминал) то когда я пытаюсь извлечь массив из файла, все значения буфера куда я загружаю массив заполняться значением 2147483647.

И что самое интересное, это если я пытаюсь запустить тот же файл, тем же кодом на 5-Digits брокере всё работает прекрасно, индикатор который должен брать информацию из файла её прекрасно отображает на графике, как на "родном" терминале...

прикрепляю кусок кода по выводу информации из файла

buff - это буфер индикатора куда должен загрузится массив из файла

int h=FileOpen("data.bin",FILE_BIN|FILE_READ);

 

int s1=FileReadInteger(h,LONG_VALUE);
   ArrayResize(buff,s1);
   FileReadArray(h,buff,0,s1);     


 FileClose(h);  
   

Всем Большое спасибо за помощь

 

Вроде бы вопрос уже во второй теме поднят. Спам получается. Оставь его в одном месте. В остальных удали. Найдутся желающие ответить - ответят. Не найдутся, извини.

 
Vinin:

Вроде бы вопрос уже во второй теме поднят. Спам получается. Оставь его в одном месте. В остальных удали. Найдутся желающие ответить - ответят. Не найдутся, извини.


я просто к "Теме" кусок добавил, а так то вопрос один получиться...
 
JohnOne:

я просто к "Теме" кусок добавил, а так то вопрос один получиться...

Извини. Ошибся. Хотя твою проблему возможно и по другому решить. Но пока информации мало.
 
Vinin:

Извини. Ошибся. Хотя твою проблему возможно и по другому решить. Но пока информации мало.

Я использую один индикатор что обрабатывает информацию, а згенерированый результат с буферов нужно передать другому индикатору (что в своей очереди может находится совсем в другом месте, не в том же самом терминале). Для этого я записываю информацию с буферов в файл, что-бы потом извлечь её в другом месте.

Но по непонятным причинам,один и тот-же индикатор который должен извлекать информацию из файла, и имеет только функцию чтения ( значит файл он не может изменить сам файл), на 5-Digits брокере извлекает правильные значения массивов, а на 4-Digits из файла извлекаются только значения 2147483647 для всех значений массива.


 
Может, там где нить NormalizeDouble применить надо?
 
JohnOne:

Я использую один индикатор что обрабатывает информацию, а згенерированый результат с буферов нужно передать другому индикатору (что в своей очереди может находится совсем в другом месте, не в том же самом терминале). Для этого я записываю информацию с буферов в файл, что-бы потом извлечь её в другом месте.

Но по непонятным причинам,один и тот-же индикатор который должен извлекать информацию из файла, и имеет только функцию чтения ( значит файл он не может изменить сам файл), на 5-Digits брокере извлекает правильные значения массивов, а на 4-Digits из файла извлекаются только значения 2147483647 для всех значений массива.



Надо код смотреть.Так бесполезно.
 
JohnOne:

Я использую один индикатор что обрабатывает информацию, а згенерированый результат с буферов нужно передать другому индикатору (что в своей очереди может находится совсем в другом месте, не в том же самом терминале). Для этого я записываю информацию с буферов в файл, что-бы потом извлечь её в другом месте.

 Но по непонятным причинам,один и тот-же индикатор который должен извлекать информацию из файла, и имеет только функцию чтения ( значит файл он не может изменить сам файл), на 5-Digits брокере извлекает правильные значения массивов, а на 4-Digits из файла извлекаются только значения 2147483647 для всех значений массива.

Это мы уже поняли. Под фразой «информации мало», имелся в виду код, в том что вы показали ошибок нет.

 
И кстати 2147483647
 
ToLik_SRGV:

Это мы уже поняли. Под фразой «информации мало», имелся в виду код, в том что вы показали ошибок нет.



Да и ошибок и не должно быть, потому что он точно тем же самым кодом на любом 5-знаку и на "родном" терминале ( там где 4-знак) с файла достаёт абсолютно точные значения для массива, а вот когда ставить на 4-знак ничего не работает.

( данные были взяты на 4 знаках, а значения подогнаны на 4-5 знаков)

 
JohnOne:


Да и ошибок и не должно быть, потому что он точно тем же самым кодом на любом 5-знаку и на "родном" терминале ( там где 4-знак) с файла достаёт абсолютно точные значения для массива, а вот когда ставить на 4-знак ничего не работает.
( данные были взяты на 4 знаках, а значения подогнаны на 4-5 знаков) 

Насколько я понимаю, в данном вопросе, разницы меду 5 и 4 знаками нет, нужный формат можно получить используя NormalizeDouble() с нужной точностью, поэтому проблема не в разрядности.

Вам Abzasc написал, что 2147483647 – это EMPTY_VALUE, он же 0x7FFFFFFF, то есть пустое значение, похоже в ваш массив ничего не записывается, и с коре всего это связано с индикатором который изначально представляет данные для записи, по этому вас и попросили больше кода, что бы не гадать на кофейной гуще, а действительно помочь норм. советом, как решить данную проблему.