Russian Qt Forum
Апрель 30, 2024, 07:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Хитрый способ визуализации содержимого файла  (Прочитано 8639 раз)
Raks123
Гость
« : Июнь 16, 2012, 18:14 »

У меня возникла проблема: мне нужно как то ухитриться открыть открыть файл. Беда в том, что в файл постоянно (через промежутки в 100-125 миллисекунд) записывается информация. Я кое-что заметил, что если открыть текстовым редактором этот файл, то запись продолжится без каких либо погрешностей. В визуализации я бум бум, да и процесс осложняется тем, что приложение кросс платформенное. Вообще можно ли "вшить" в программу текстовый редактор? Да и как искать текстовые редакторы линуха? Может у кого есть предложение получше?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Июнь 16, 2012, 19:04 »

Зачем хитрить и лезть в окно если дверь-то открыта? Улыбающийся  Открываете файл в режиме ReadOnly, читаете и загружаете напр в QPlainTextEdit, С определенным интервалом времени (напр 2 сек) проверяете изменилась ли дата или размер файла, если да - перечитываете. Возможно есть способ и лучше, но и этот несложен и неплох. Заметим что изменения зависят от пишущего. Напр есои он кеширует вывод, то добавляться будут большие куски (а не по строке).
Записан
maint
Гость
« Ответ #2 : Июнь 16, 2012, 19:04 »

открыть только по чтению и через промежутки читать файл до EOF и писать все это дело на, ну скажем в QListWidget
Записан
Raks123
Гость
« Ответ #3 : Июнь 16, 2012, 19:07 »

А режим чтения не будет конфликтовать, если файл в это время открыт только для записи?
Записан
mutineer
Гость
« Ответ #4 : Июнь 16, 2012, 21:28 »

А режим чтения не будет конфликтовать, если файл в это время открыт только для записи?

Не должен, но самый лучший способ узнать - попробовать
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Июнь 17, 2012, 02:07 »

Здесь может пригодиться QFileSystemWatcher
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Bepec
Гость
« Ответ #6 : Июнь 17, 2012, 09:26 »

Watcher не реагирует на изменение размеров файла Улыбающийся Так же на изменение его атрибутов и открытие/закрытие файла.

Однако если его допилить, то будет. Где то даже темка такая была.
Записан
alexman
Гость
« Ответ #7 : Июнь 17, 2012, 09:43 »

Watcher не реагирует на изменение размеров файла Улыбающийся Так же на изменение его атрибутов и открытие/закрытие файла.

Однако если его допилить, то будет. Где то даже темка такая была.
Тыкни на допиленный вариант?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Июнь 17, 2012, 14:01 »

Цитировать
Watcher не реагирует на изменение размеров файла

QFileSystemWatcher реагирует на модификацию файла и нам этого предостаточно. Не знаю как в Qt 4.8.х, но до 4.6.3 это работало.

Цитировать
The fileChanged() signal is emitted when a file has been modified, renamed or removed from disk.

Как уже сказал Igors, здесь есть проблема со стороны буфферизированного вывода (буфер QFile, буфер ОС). Данные не сразу попадут в файл и, как следствие, визуализация лога будет происходить блоками.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Bepec
Гость
« Ответ #9 : Июнь 17, 2012, 15:05 »

4.7.x - не работает на изменение/добавление/удаление информации из файла и изменение его атрибутов. Причём повторюсь - не только у меня Подмигивающий Была и темка про это.

Искать... Лень.. Воскресенье...
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #10 : Июнь 17, 2012, 16:25 »

4.7.x - не работает на изменение/добавление/удаление информации из файла и изменение его атрибутов. Причём повторюсь - не только у меня Подмигивающий Была и темка про это.

Вспоминается такая проблема была когда мониторишь директорию. При изменении контента файла directoryChanged не испускался. Как сейчас обстоят дела именно с fileChanged - хз. Было бы неплохо увидеть тред с описанием проблемы и примером. На трекере по этому поводу инфы нет.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Patrin Andrey
Гость
« Ответ #11 : Июнь 18, 2012, 08:27 »

Вспоминается такая проблема была когда мониторишь директорию. При изменении контента файла directoryChanged не испускался.
Никогда им не пользовался, но лично мне показалось бы странным, если бы при изменении контента файла, испускался directoryChanged
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #12 : Июнь 18, 2012, 14:04 »

Никогда им не пользовался, но лично мне показалось бы странным, если бы при изменении контента файла, испускался directoryChanged

Это написано в документации, никакой отсебятины:

Цитировать
void QFileSystemWatcher::directoryChanged ( const QString & path ) [signal]
Цитировать
This signal is emitted when the directory at a specified path, is modified (e.g., when a file is added, modified or deleted) or removed from disk.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Bepec
Гость
« Ответ #13 : Июнь 18, 2012, 18:32 »

Суть проблемы проста - нужно мне как то было отследить изменение размеров файла и их появление (тырилку видео с сайтов, простейшую). Соответственно ставил watcher на папку кеша и ждал, когда 1 из файликов начнёт увеличиваться Улыбающийся Ну и до тех пор, пока он не прекратит толстеть Улыбающийся

В результате - сигнал был только при появлении файлов. При удалении, модифицировании и увеличение размера была тиш да благодать. Пришлось чуть смухлевать и свой класс накарябать на это ориентированный.

PS исходники Qt я пока не трогаю - боюсь Веселый
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #14 : Июнь 18, 2012, 19:10 »

Да, с этим была проблема и исправлять это не думают. Остановились лишь на том, что это недочет в документации по сигналу directoryChanged. fileChanged сигнал должен работать как ожидается.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 23.