Возникла проблема [при считывании из файла]! - страница 3

 
orb: ребят делает одну лишнюю итерацию...может через break выход прописать?

Просто следите за счетчиком цикла и индексом элементов в массиве. Да и какая тут разница - при 1000 итераций. Ну попробуйте с break, но время выполнения чуть увеличится.

Вроде сами почти во всем и разобрались. Нормально, и дальше сможете. Просто почаще читайте документацию/хэлп.

 
Mathemat:

Просто следите за счетчиком цикла и индексом элементов в массиве. Да и какая тут разница - при 1000 итераций. Ну попробуйте с break, но время выполнения чуть увеличится.

Вроде сами почти во всем и разобрались. Нормально, и дальше сможете. Просто почаще читайте документацию/хэлп.


Да прибудет со мной Forex!=)
 

В начале цикла : if(str==""){break;}, то есть независимую проверку на конец файла (строки) и выход. тогда не придеться счетчик уменьшать для форматирования...

Это потому что while - цикл с постпроверкой

 
FAQ:

В начале цикла : if(str==""){break;}, то есть независимую проверку на конец файла (строки) и выход. тогда не придеться счетчик уменьшать для форматирования...

Это потому что while - цикл с постпроверкой

Спасибо, попробую сделать.
 

Есть небольшое исследование - вот тут.

FAQ, я и не подозревал, что ты тут настолько прав: пару мегабайт вряд ли дождешься и спать ляжешь...

 
Я знаю, то я знаю ;) и рад что и ты узнал. Просто приходиться много работать и поэтому оптимизация кода имеет не последнюю роль.
 

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

Код:

/*----------- Блок "Считывание истории из файла" -------------------------*/   
 int qq=1;
 while (FileIsEnding(h3)==false)
 {
  string str=FileReadString(h3);
  if (str=="") {break;}
  ArrayResize(Histxmas,qq);
  Histxmas[qq-1][0]=StrToDouble(FileReadString(h3));
  Histxmas[qq-1][1]=StrToDouble(FileReadString(h3));
  Histxmas[qq-1][2]=StrToDouble(FileReadString(h3));
  Histxmas[qq-1][3]=StrToDouble(FileReadString(h3));
  
  Print("Histxmas[",qq-1,"][",0,"]=",Histxmas[qq-1][0]);
  Print("Histxmas[",qq-1,"][",1,"]=",Histxmas[qq-1][1]);
  Print("Histxmas[",qq-1,"][",2,"]=",Histxmas[qq-1][2]);
  Print("Histxmas[",qq-1,"][",3,"]=",Histxmas[qq-1][3]);
  Print("Итерация");
  qq++;
} 
  FileClose(h3);
  int N=qq-1;//переопределяем размер массива исторических значений
 
/*----------- Коней блока "Считывание истории из файла" -------------------*/ 

Картинки, что на тестировании массив заполняет и сам файл как данные располагаются:

 
Ну так сделайте нормализацию до 8 знаков и проверьте.
 
Сделал, не помогает.
 
главное помогите решить проблему, считывания из файла, а то как-то странно он данные в массив закидывает.
Причина обращения: