Пример как прочитать большой кривой текстовый файл - страница 2

 
evgeniy scherbina:
В том что мне нужна строка от <tr> до </tr>. Внутри некоторых строк есть спец символы, которые разрывают строку. Либо строка обрывается по длине. 

Пожалуйста. Читаем построчно и собираем в одну переменную. Потом можно как угодно ее делить.

   int h=FileOpen("calendar_ff_14-08-2016.htm",FILE_READ|FILE_TXT|FILE_ANSI);
   if(h==-1)return;
   
   string all="";
   
   while(!FileIsEnding(h)){
      string str=FileReadString(h);
      //Alert(str);
      all=all+str;
   }
   
   Alert(all);
   
   FileClose(h);
Разделение на строки лучше делать с использованием функции StringFind(), будет значительно быстрее работать. С посимвольным перебором большие файлы очень долго будут обрабатываться.
 
Dmitry Fedoseev:

Пожалуйста. Читаем построчно и собираем в одну переменную. Потом можно как угодно ее делить.

Ха ха. Проверьте строки. Там где вы соединяете строки без FILE_SEEK, у вас произвольное соединение, и это как правило минус 3 или 4 (не помню) символа. То есть было слово "calendar", а записано в all "cale". В итоге вы обрезали ключевое слово, по которому потом нужно выявлять какие-то значения в файле.

Мой метод точный, ибо он выстрадан 

 
evgeniy scherbina:

Ха ха. Проверьте строки. Там где вы соединяете строки без FILE_SEEK, у вас произвольное соединение, и это как правило минус 3 или 4 (не помню) символа. То есть было слово "calendar", а записано в all "cale". В итоге вы обрезали ключевое слово, по которому потом нужно выявлять какие-то значения в файле.

Мой метод точный, ибо он выстрадан 

С какого вдруг перепуга символы теряться должны? Вы о чем? Прежде чем выражать свое мнение, стоило бы попробовать.
 

Попробовал. Ничего не потерялось.

int handle=FileOpen("calendar_ff_14-08-2016.htm",FILE_READ|FILE_TXT|FILE_ANSI);
   if(handle==INVALID_HANDLE)return;
   int out_handle=FileOpen("calendar_new.txt",FILE_WRITE|FILE_TXT|FILE_ANSI);  
   if(out_handle==INVALID_HANDLE)return;
   while(!FileIsEnding(handle)){
    
      string str=FileReadString(handle);
      FileWrite(out_handle, str);
   }
   
   FileClose(handle);
   FileClose(out_handle);

 Результат в подвале

Файлы: