Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение файла в реальном времени (RichTextBox) 
:(
    Опции темы
DENSHER
Дата 16.7.2010, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Привет народ!
Нужна помощь в следующем.
Сторонняя программа пишет логи в файл console_log.txt.
Я же хочу в форме вывести в RichTextBox1 текст который пишется в console_log.txt (в реальном времени).Получается по задумке , мониторинг текста.
Достаточно важно.
Хочется чтобы текст который выводился (читался с файла console_log.txt) в RichTextBox1 , добавлялся не стирая старый.

Вот какой код пробывал:
Код

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Const ForReading = 1

        Dim objFSO = CreateObject("Scripting.FileSystemObject")
        Dim strLine = ""

        Do Until strLine = "End"

        Dim objFile = objFSO.OpenTextFile("D:\Server\console_log.txt",ForReading)

            Do Until objFile.AtEndOfStream
                strLine = objFile.ReadLine
            Loop

            RichTextBox1.Text = strLine

            objFile.Close()

        Loop
End Sub

Но он выводит в реальном времени , только последнюю строчку из console_log.txt
PM MAIL   Вверх
diadiavova
Дата 16.7.2010, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Вместо
Цитата(DENSHER @  16.7.2010,  08:16 Найти цитируемый пост)
   RichTextBox1.Text = strLine

используй
Код

   RichTextBox1.AppendText(vbNewLine & strLine)



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
DENSHER
Дата 16.7.2010, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



diadiavova , очень странно. Когда я изменил код 
с (RichTextBox1.Text = strLine) на ( RichTextBox1.AppendText(vbNewLine & strLine)
При попытке считать информацию с console_log.txt , у меня одна строчка начала множится что аж Scrollbars мизерным стал и форма зависла.

Может из этого кода что-то подскажешь
Код

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Tool As String
        Try

            Dim sr As StreamReader
            'declaration of filestream to open file 
            Dim fs As FileStream
            'clearing listbox data toavoid confusion 
            'filestream object to open and read file 
            fs = New FileStream(("D:\Server\console_log.txt"), FileMode.OpenOrCreate)
            'stream reader object to read streamed input 
            sr = New StreamReader(fs)
            Dim itm As Object
            'reading line by line 
            itm = sr.ReadLine
            While Not itm = Nothing
                Dim split As String() = itm.Split(New [Char]() {","})
                Tool = split(0)

                ListView1.Items.Add(Tool)

                itm = sr.ReadLine
            End While
            'close stream reader and filestrema object 
            sr.Close()
            fs.Close()
        Catch ex As System.Exception

            System.Windows.Forms.MessageBox.Show(ex.Message, "Load Tool Data Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
End Sub

а то я уже не знаю как мне считать этот лог файл правильно в реальном времени.
Если есть проще вариант , то за пример заранее спасибо.

Это сообщение отредактировал(а) DENSHER - 16.7.2010, 09:00
PM MAIL   Вверх
diadiavova
Дата 16.7.2010, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(DENSHER @  16.7.2010,  09:32 Найти цитируемый пост)
 Когда я изменил код 
с (RichTextBox1.Text = strLine) на ( RichTextBox1.AppendText(vbNewLine & strLine)
При попытке считать информацию с console_log.txt , у меня одна строчка начала множится что аж Scrollbars мизерным стал и форма зависла.

Не знаю, вот пример, в нём всё работает

Добавлено через 4 минуты и 47 секунд
А зачем тебе двойной цикл? smile 

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  addtexttortb.rar 73,14 Kb


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
DENSHER
Дата 16.7.2010, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Странно , проект у меня открывается с ошибками , но скомпилированный файл я опробовал. Все работает , но чуток не так.
При открытии файла , он просто считывает текст. Мне все же нужно чтобы он считывал текст , скажем каждые 5 сек. - не стирая старый и добавляя новый.Поскольку логи сервера пишутся каждые 2 - 3 секунды. Возможен такой вариант?

Написать более простым языком. Мониторинг логов (текста).


Это сообщение отредактировал(а) DENSHER - 16.7.2010, 09:18
PM MAIL   Вверх
diadiavova
Дата 16.7.2010, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(DENSHER @  16.7.2010,  10:13 Найти цитируемый пост)
Странно , проект у меня открывается с ошибками

У тебя какая версия студии? Проект написан на 2010.

Цитата(DENSHER @  16.7.2010,  10:13 Найти цитируемый пост)
 Мне все же нужно чтобы он считывал текст , скажем каждые 5 сек. - не стирая старый и добавляя новый.

Ну так запускай метод считывания по таймеру. Какие с этим проблемы? О ничего не стирает.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
DENSHER
Дата 16.7.2010, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



Цитата(diadiavova @ 16.7.2010,  09:19)
Цитата(DENSHER @  16.7.2010,  10:13 Найти цитируемый пост)
Странно , проект у меня открывается с ошибками

У тебя какая версия студии? Проект написан на 2010.

Цитата(DENSHER @  16.7.2010,  10:13 Найти цитируемый пост)
 Мне все же нужно чтобы он считывал текст , скажем каждые 5 сек. - не стирая старый и добавляя новый.

Ну так запускай метод считывания по таймеру. Какие с этим проблемы? О ничего не стирает.

Возможно я что-то не понял , заранее извиняюсь.
Но когда я попробовал открыть файл два раза , у меня получилось следующие.
1-й раз открыл , получил 5 строчек.
2-й раз открыл (по идее должен получить +2 дополнительные строчки) получил 5 строчек старых +2 новых и в общем получилось не 7 строчек , а целых 12.
Возможно это из-за открытия или если я использую таймер , будет все нормально?

Это сообщение отредактировал(а) DENSHER - 16.7.2010, 09:35
PM MAIL   Вверх
diadiavova
Дата 16.7.2010, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Ну это естественно: открываешь файл и он считывается сначала.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
DENSHER
Дата 16.7.2010, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



А можно сделать чтобы он не с начало считывал , а дополнял?
Скажем добавил 5 строчек , запомнил их и потом начал добавлять уже с 6 строчки ит.д.
Такое можно провернуть?

Поскольку логи у сервера обнуляются через сутки , чтение файла уже через 12 часов будут не актуальны.
Там набежит свыше 5000 строчек и пока я их прочитаю через форму это будет ...

diadiavova , если есть возможность не считывать заново , а добавлять. Покажи пожалуйста как это сделать.

Это сообщение отредактировал(а) DENSHER - 16.7.2010, 09:52
PM MAIL   Вверх
diadiavova
Дата 16.7.2010, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Разве что запоминать где остановился и при повторном считывании прогонять до этого место вхолостую.
Ну это как-то smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
DENSHER
Дата 16.7.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 3.3.2010

Репутация: нет
Всего: нет



И на этом спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.