crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Загрузка большого текстового файла, Проблемы с загрузкой
ALeXUI
  опции профиля:
сообщение 17.12.2012, 23:13
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 30.4.2011
Пользователь №: 2647

Спасибо сказали: 2 раз(а)




Репутация:   0  


Здравствуйте, столкнулся со следующей проблемой.
Необходимо загрузить и обработать, большой текстовый файл, примерно 20 мб.
И желательно его вывести, например, в qtextedit или что-нибудь подобное.

Самы простой вариант дико загружает компьютер:


        QFile Filetxt;
        Filetxt.setFileName(PathName);
        Filetxt.open(QIODevice::ReadOnly);
        QTextStream textStream;
        textStream.setDevice(&Filetxt);        
        MainTextEdit->append(textStream.readAll());
        Filetxt.close();








Подскажиет пожалуйста, как это сделать лучше?

Нужно распарсить каждую строчку, там находятся данные, по которым строить графики.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Snake174
  опции профиля:
сообщение 18.12.2012, 4:28
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 18.4.2011
Из: Миасс
Пользователь №: 2613

Спасибо сказали: 9 раз(а)




Репутация:   0  


Я создавал буфер для содержимого файла char *data = new char[ file_size ], читал в него содержимое и в QTextEdit выводил только ту часть, которая видна в данный момент. Если в QTextEdit влазит, например 20 строк, то зачем показывать все остальные. Это как при программировании графики, когда нужно отсекать то, что не попадает в камеру, чтобы лишнее не рисовалось. Файлы были размером до 200 Мб и всё летало. Я так понял дико загружает компьютер то, что в QTextEdit постоянно грузятся данные и Qt пытается всё это перерисовывать.

Сообщение отредактировал Snake174 - 18.12.2012, 4:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 13.9.2013, 9:20
Сообщение #3





Гости








    


Цитата(Snake174 @ 18.12.2012, 4:28) *
Я создавал буфер для содержимого файла char *data = new char[ file_size ], читал в него содержимое и в QTextEdit выводил только ту часть, которая видна в данный момент. Если в QTextEdit влазит, например 20 строк, то зачем показывать все остальные. Это как при программировании графики, когда нужно отсекать то, что не попадает в камеру, чтобы лишнее не рисовалось. Файлы были размером до 200 Мб и всё летало. Я так понял дико загружает компьютер то, что в QTextEdit постоянно грузятся данные и Qt пытается всё это перерисовывать.


Не так уж и летает! Реализовал Ваш алгоритм. Если просматривать файл в 200 Mb, то конец файла очень медлительный. Это и не удивительно - так как постоянно приходится проходить весь файл при вычислении значения pos
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Snake174
  опции профиля:
сообщение 16.9.2013, 5:58
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 18.4.2011
Из: Миасс
Пользователь №: 2613

Спасибо сказали: 9 раз(а)




Репутация:   0  


Цитата(Гость @ 13.9.2013, 9:20) *
Цитата(Snake174 @ 18.12.2012, 4:28) *
Я создавал буфер для содержимого файла char *data = new char[ file_size ], читал в него содержимое и в QTextEdit выводил только ту часть, которая видна в данный момент. Если в QTextEdit влазит, например 20 строк, то зачем показывать все остальные. Это как при программировании графики, когда нужно отсекать то, что не попадает в камеру, чтобы лишнее не рисовалось. Файлы были размером до 200 Мб и всё летало. Я так понял дико загружает компьютер то, что в QTextEdit постоянно грузятся данные и Qt пытается всё это перерисовывать.


Не так уж и летает! Реализовал Ваш алгоритм. Если просматривать файл в 200 Mb, то конец файла очень медлительный. Это и не удивительно - так как постоянно приходится проходить весь файл при вычислении значения pos

Ты бы ещё лет через 5 ответ написал. К тому же _Vitaliy_ предложил отличный вариант, сделал также, всем доволен.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.11.2024, 6:53