Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2010, 11:34   #1
Riply
Пользователь
 
Регистрация: 05.10.2009
Сообщений: 21
По умолчанию Найти строку в файле

Можно ли найти такую часть строки в логе и вытащить из неё ник,ip,порт?
cli(*.*.*.*:*,'*',*)
где: первые 4 звёздочки - ip адрес
5-ая звёздочка - порт
6-ая - ник
7-ая - не поддающийся систематизации набор знаков.

Последний раз редактировалось Riply; 26.08.2010 в 11:37.
Riply вне форума Ответить с цитированием
Старый 26.08.2010, 12:20   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

конечно можно
1. Грузим файл в стринглист
2. проходим в цикле по строкам и ф-ей Pos ищем строку которая содержит слово cli если такая строка есть то всё той же ф-ей pos + copy (возможно ещё и delete) вытаскиваем ip порт и имя
SERG1980 вне форума Ответить с цитированием
Старый 27.08.2010, 13:09   #3
dexterua
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 24
По умолчанию

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

Код:
System::Text::RegularExpressions::Regex^ regex=gcnew System::Text::RegularExpressions::Regex(""
+"cli\\(([01]?\\d?\\d|2[0-4]\\d|25[0-5])\\."
+"([0-1]?\\d?\\d|2[0-4]\\d|25[0-5])\\."
+"([0-1]?\\d?\\d|2[0-4]\\d|25[0-5])\\."
+"([0-1]?\\d?\\d|2[0-4]\\d|25[0-5])."
+"\\d+.\\w.\\.+\\))");

System::Text::RegularExpressions::MatchCollection^ match = regex->Matches(Text);//Тут Text, это твой файл загружен, например, в листбокс

for each(System::Text::RegularExpressions::Match ^m in match)
     {
       
       listBox2->Items->Add(m->ToString());//а здесь идет выгрузка всех строк которые были найдены
     }
Что оно делает - задается регулярное выражение по которому будет искать, про них написано много и можно найти как записывать, я набросал вроде похоже для тебя, но не проверял.
После этого оно в строке или коллекции строк ищет все вхождения подходящих строк и пишет их в коллекцию.
Потом вытаскиваем все эти строки и записываем на экран.

Я такое использую когда надо найти в логах определенную информацию.
dexterua вне форума Ответить с цитированием
Старый 03.10.2010, 18:01   #4
Riply
Пользователь
 
Регистрация: 05.10.2009
Сообщений: 21
По умолчанию

Спасибо, дело в том что file.log в момент поиска в нём будет записываем, т.е. в нём будут появляться новые строки.
Думаю алгоритм должен быть что-то вроде: открыть N-ую строку в файле, произвести поиск пока не достигнут конец файла, запомнить позицию, закрыть файл и повторять эти процедуры в бесконечном цикле. Только вот как это кодом сделать что-то не соображу.
Riply вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти ошибку, в файле. Паскаль. Veleri92 Помощь студентам 6 02.06.2010 21:43
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
Найти и поменять запись в файле Kib Общие вопросы Delphi 3 11.11.2009 16:46
Раскройте секрет в файле (найти формулу) Jon63 Microsoft Office Excel 3 06.10.2007 17:04
Нужно найти последнюю строку в файле с информацией и узнать ее адрес Мефистофель Microsoft Office Excel 2 10.06.2007 16:03