Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/14: Рейтинг темы: голосов - 14, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 8

Выполнять периодический поиск текста в файле

31.08.2010, 22:17. Показов 2954. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть тхт файл в который ведется лог, обновляеться каждые 15 сек, добавляя записи.
структура примерно такая:

Запись №1
важные строки )
...
важные строки )

Запись №2
важные строки )
...
важные строки )


и Тд.

как лучше всего реализовать программу, которая бы:
1. Следила когда изменился файл (реализовано)
2. при изменении выполнял поиск последней записи
3. Считывал важные строки
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.08.2010, 22:17
Ответы с готовыми решениями:

Поиск текста в файле
Всем привет! Есть текстовый файл, в котором написан текст блоками. Блоки разделены друг с другом пустыми строками. Нужно найти по...

Поиск текста в файле
Здравствуйте, нужно реализовать поиск текста в файле и чтобы находил все совпадение, а не одно. Поискал в интернете - не нашел. Надеюсь...

Поиск текста в файле
Добрый день. задача: находить в текстовом файле введенный с клавиатуры текст и в дальнейшем копировать строку в которой нашлось...

14
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
31.08.2010, 22:24
2. при изменении выполнял поиск последней записи
3. Считывал важные строки
Ну последняя она и в африке последняя
Можно считать весь файл в массив и разбить по "Запись №"

А по поводу считывания "важных строк" с таким подходом очень скоро могут возникнуть проблемы с переполнением - размер файла будет всё время расти?
0
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 8
01.09.2010, 16:00  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Ну последняя она и в африке последняя
Можно считать весь файл в массив и разбить по "Запись №"

А по поводу считывания "важных строк" с таким подходом очень скоро могут возникнуть проблемы с переполнением - размер файла будет всё время расти?
Размер максимального файла который я нашел 2,4мб, но как правило он не превышает 0,5мб -1мб

Вообще у меня была написана такая программа на скорую руку.
открытие файла через openfile()
считывание каждой строки (через input() ) с поиском строки "Важная строка" извлекался ее номер( не номер строки, а номер после "Важная строка№") и так пока не найдет последнюю, после чего closefile() - openfile() опять считывал строки пока не найду нужную строку с уже известным номером

вот так проходил у меня пункт 2 по поиску новой записи ))

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

прочитал про в мсдн про TextFieldParser, но не разобрался как заного открыть тот же файл без создания нового объекта (или с созданием но с тем же именем), что бы реализовать тоже самое только считывать строки полностью TextFieldParser-ом
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
01.09.2010, 19:46
Есть тхт файл в который ведется лог
Размер максимального файла
Так, наверное, надо сначала определиться с файлом(или всё-таки с файлами)

открытие файла через openfile
как заного открыть тот же файл без создания нового объекта
Вы в какой среде работаете?
Может быть текстовой файл проще открыть старыми испытанными способами (Open File For..) а не "изобретать велосипед"?
1
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
01.09.2010, 20:53
как вариант, воспользоваться объектом RegExp (в MSDN есть справка на русском). в коллекции Matches будут содержаться все найденные строки. минимум кода, приемлемое время работы. самое трудное, составить подходящее регулярное выражение. вот здесь есть пример Найти знак умножения
1
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 8
03.09.2010, 23:32  [ТС]
Сделал все через массив и StreamReader проверял на файлах, добавляя сам записи, все работает отлично. Решил попользоваться в реальном времени вылазит ошибка "файл использкеться другим приложением", думал после изменения скопировать - не копируется.. но в проводнике 2ым кликом открывается, вручную не копируется. Какие есть варианты его прочесть?
ЗЫ
Dim fileReader As System.IO.StreamReader = New System.IO.StreamReader(strFileName)
не может получить доступ при использовании другим приложением?
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
04.09.2010, 08:41
Есть тхт файл в который ведется лог, обновляеться каждые 15 сек
после обновления файл закрывается?
программа обращается к файлу когда он открыт для дозаписи.
попробуй перехватить ошибку и снова попробовать открыть(влезть в промежуток времени пока файл не занят)

Добавлено через 7 часов 13 минут
На VB6 работает.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Option Explicit
Dim Z
Dim LL
 
Private Sub Form_Load()
On Error Resume Next
Kill App.Path & "\1.txt"
End Sub
 
Private Sub Комманда1_Click()
Часы1.Enabled = True
End Sub
 
Private Sub Комманда2_Click()
Часы1.Enabled = False
End Sub
 
Private Sub Комманда3_Click()
Dim MS() As String
   Dim File As String, CF As String
   Dim i As Integer
   File = App.Path & "\1.txt"
   Open File For Binary As #1
   If LL = FileLen(File) Then Close #1: Exit Sub
   LL = FileLen(File)
      CF = Input(FileLen(File), 1)
   Close #1
   MS = Split(CF, "Запись № ")
   
 
 MS = Split(MS(UBound(MS)), vbNewLine)
 Метка2.Caption = "Запись № " & MS(0)
For i = 1 To UBound(MS) - 1
Метка1(i - 1).Caption = MS(i)
Next i
 
End Sub
 
Private Sub Комманда4_Click()
Часы2.Enabled = True
End Sub
Private Sub Комманда5_Click()
Часы2.Enabled = False
End Sub
 
Private Sub Часы1_Timer()
Z = Z + 1
Open App.Path & "\1.txt" For Append As 1
Print #1, "Запись № " & " " & Z
Print #1, "Важная строка  № " & " " & Z & 1
Print #1, "Важная строка  № " & " " & Z & 2
Print #1, "Важная строка  № " & " " & Z & 3
Close 1
End Sub
 
Private Sub Часы2_Timer()
Комманда3_Click
End Sub
0
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 8
04.09.2010, 19:21  [ТС]
[QUOTE=Alex77755;939344]после обновления файл закрывается?
программа обращается к файлу когда он открыт для дозаписи.
попробуй перехватить ошибку и снова попробовать открыть(влезть в промежуток времени пока файл не занят)

файл все время занят процессом, скопировать, записать в него ничего нельзя. Я так понял только для чтения открыть можно. СтримРидер может как то только для чтения открывать файл?
КОд проверю позже отпишу.
0
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 8
10.09.2010, 20:16  [ТС]
ничего не получилось.. стимридер не открывает уже открытый файл, при помощи опен файл немогу записать в массив строку "так, как я ее вижу"
немогу поверить что нет варианта открыть файл(уже открытый, с запятыми) для чтения, и записать его построчно в массив...
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
11.09.2010, 00:47
файл все время занят процессом
Чужой программы? изменить нельзя, чтобы после записи закрывал?
0
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 8
11.09.2010, 17:40  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Чужой программы? изменить нельзя, чтобы после записи закрывал?
никак (((
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
11.09.2010, 18:24
может это поможет?
0
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 8
11.09.2010, 18:32  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
1. в бинари открываеться для чтения, как считать его точную копию?

2. API:
Private Declare Function SHFileOperation Lib 'shell32.dll' _
Alias 'SHFileOperationA' (lpFileOp As SHFILEOPSTRUCT) As Long

вот что это, я вообще не понял
0
1181 / 632 / 39
Регистрация: 30.05.2010
Сообщений: 715
11.09.2010, 19:45
Здравствуйте odessalamerok.
нельзя ли Ваш текстовый файлик получить, для образца и проверки собственной идеи?
Евгений.
0
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 8
11.09.2010, 23:14  [ТС]
Цитата Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте odessalamerok.
нельзя ли Ваш текстовый файлик получить, для образца и проверки собственной идеи?
Евгений.
я могу тут написать пример, сам файл не могу кинуть, но он едентичен этому ))
---------------------------------------------------
День №123
ФИО: Иванов Иван Иванович, дата рожения: 1,01,1981, оклад: 12,345
ФИО: Петров Петр Петрович, дата рожения: 2,02,1982, оклад: 34,568


День №124
ФИО: Хренова Гадя Петровна, дата рожения: 5,05,1985, оклад: 24,348
ФИО: Ларин Игорь Николаевич, дата рожения: 6,06,1986, оклад: 24,157


--------------------------------------------
Раньше были не запятые и массив выглядел так

Visual Basic
1
2
3
4
5
6
7
8
9
mass(0)="День №123"
mass(1)="ФИО: Иванов Иван Иванович дата рожения: 1.01.1981 оклад: 12345"
mass(2)="ФИО: Петров Петр Петрович дата рожения: 2.02.1982 оклад: 34568"
mass(3)=""
mass(4)=""
mass(5)="День №124"
mass(6)="ФИО: Хренова Гадя Петровна дата рожения: 5.05.1985, оклад: 24348"
mass(7)="ФИО: Ларин Игорь Николаевич дата рожения: 6.06.1986, оклад: 24157"
mass(8)=""
mass(9)=""

теперь вот так:
Visual Basic
1
2
3
4
5
6
7
mass(0)="День №123"
mass(1)="ФИО: Иванов Иван Иванович"
mass(2)="дата рожения: 1"
mass(3)="01"
mass(4)="1981"
mass(5)="оклад: 12"
mass(6)="345"
..... и.тд.

Добавлено через 3 часа 14 минут
Разобрался ))) вот так это делается

Visual Basic
1
2
3
4
5
6
7
8
Dim fs As FileStream = New FileStream(strFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
            Dim fr As StreamReader = New StreamReader(fs)
            Dim mass() As String
 
 
            mass = fr.ReadToEnd.Split(Chr(10) & Chr(13))
            fr.Close()
            fs.Close()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.09.2010, 23:14
Помогаю со студенческими работами здесь

Поиск текста в файле
Требуется написать программу, которая находит в директории файлы с определенным текстом(точнее словом), набранным в другом файле, при этом...

Поиск текста в файле
Сохраняю HTML страницу,это кусок кода '></script><div class="group-rp"><div data-wq="group-rp-hd" class="group-not-item...

Поиск текста в файле
Итак нужна ваша момошь.... У меня есть файл нужно осуществить в нём поиск каких либо букв и занести в переменную символы находящиеся...

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

Поиск текста в файле
Добрый вечер всем. Сижу не пойму, что делаю не так. Месяц назад делал набросок, вроде все работало, сейчас сижу вспоминаю, ищет, но не все....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru