Кто знает: почему не работает функция?

 

Как пример:

handle = FileOpen(FileName, FILE_CSV|FILE_READ, ";");
string str1;
int i;
if (handle>0)
{
while (i<50)
{
 str1=FileReadString(handle);


Print("строка=",str1);


 Print("с=",FileIsEnding(handle));


if (FileIsLineEnding(handle)) Print("Конец строки");


if (FileIsEnding(handle))


{
Print("Конец файла");
break;
}
i++;
if (i>100) break;
}
FileClose(handle);
}
//----
return(0);
}








В журнале не пишется "Конец файла"
пишет с= 0

Кто знает?

 
На первый взгляд все правильно. Оператор if (i>100) break лишний.
А до конца текста доходит? Сколько вообще строк выводит?
 
Roger писал (а) >>
На первый взгляд все правильно. Оператор if (i>100) break лишний.
А до конца текста доходит? Сколько вообще строк выводит?

До конца текста доходит.Пытался посмотреть значение функции напрямую Print("с=",FileIsEnding(handle));, говорит с= 0.

Как такое может быть просто не врубаюсь.

 
Skrudg писал (а) >>

До конца текста доходит.Пытался посмотреть значение функции напрямую Print("с=",FileIsEnding(handle));, говорит с= 0.

Как такое может быть просто не врубаюсь.

очень просто - в вашем файле больше 50 строк. И смысл строки

if (i>100) break;
которая стоит в цикле, где i<50, полностью теряется
 
Scriptong писал (а) >>

очень просто - в вашем файле больше 50 строк. И смысл строки

которая стоит в цикле, где i<50, полностью теряется


Оператор этот совершенно не важен в данном примере. Что с ним, что без него все едино. Не работает.

Что еще интересно: каждая строка файла записывается в журнал дважды.




 

Не проще ли функцию сократить?

int handle = FileOpen(FileName, FILE_CSV|FILE_READ, ";");
string str1;
if (handle>0)
{
 while (!FileIsEnding(handle))
  {
   str1=FileReadString(handle);
   Print("строка=",str1);
  }
 Print("Конец файла");
 FileClose(handle);
}

А насчет дублирования строк в журнале - вообще не пойму о чем речь.

 
Scriptong писал (а) >>

Не проще ли функцию сократить?

А насчет дублирования строк в журнале - вообще не пойму о чем речь.

Да делал я и так тоже.Получается бесконечный цикл. Программа начинает считать и....

не останавливается.

 

Бесконечным он будет только в случае бесконечности файла, что довольно сомнительно.

Может просто файл довольно большой (порядка нескольких гиг)? Тогда в журнал долго и нудно будет переписываться содержимое файла.

 
Scriptong писал (а) >>

Бесконечным он будет только в случае бесконечности файла, что довольно сомнительно.

Может просто файл довольно большой (порядка нескольких гиг)? Тогда в журнал долго и нудно будет переписываться содержимое файла.

Бесконечный он потому, что функция FileIsEnding не принимае нужного значения. Она вообще никакого значения не принимает. В этом суть вопроса. А в файле всего 50 строк.

 
Нет, проверил у себя, скрипт работает отлично, в конце пишет "Конец файла". Попробуй закрыть терминал, а потом открыть заново. Все должно заработать.
Причина обращения: