Работа с файлом построчно

 
Как такое можно сделать?


Имеется текстовый файл со строками различной длинны, необходимо считывать из файлы эти строки.
 

Открыть файл как csv с разделителем, который не встречается в файле (например '\t') и читать строки.

 
int start()
  {
//---- 
   int h=FileOpen("text.txt",FILE_CSV|FILE_READ,"\t");
 
   if(h<1){
      Alert("Не удалось открыть файл ");
   }
   else{
      while(!FileIsEnding(h)){
      Alert(FileReadString(h)); 
      }
   
   }
   FileClose(h);
//----
   return(0);
  }
Но на последней строке застревает в цикле. Если добавить еще одну пустую строку, то читает и ее и выходит из цикла. Как бы вот эту проблему решить. Чтобы не пришлось следить за наличием последней пустой строки в файле. Есть пустая строка - считывается "" и соответственно не используется. Если последня строка не пустая, как же измудриться ее считать?

 
 
После чтения строки спрашивать GetLastError(). И проверять на ошибку ERR_END_OF_FILE (4099)
 
Не помогает. Пробовал и в переменную сначала читать. Застревает на считывании последней строки если она не пустая. Следующий за строкой считывания код не выполняется.
 

Проверим. И исправим, если действительно так.

А пока, чтобы не зацикливаться, перед началом чтения узнайте размер файла. После каждого чтения спрашивайте FileTell и сравнивайте возвращаемое значение с размером файла

 

Я не смог воспроизвести.

Пришлите, пожалуйста Ваш файл text.txt на stringo at metaquotes dot ru

 
Файл простой:

111
222
333

Если после 333 не нажат Enter, то 333 не считывается, если нажат, то считывается 333 и "" и всё ОК.
 
stringo, а у вас все нормально работает? Если у вас нормально, то я парить тогда не буду - буду нажмать Enter в конце фала и все:-)
 
Даже если не нажат enter всё равно считывается. Очень интересно. Какая у Вас версия клиентского терминала?
 
билд 190. Буду обновляться:-)
Причина обращения: