Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.05;
Скачать: CL | DM;

Вниз

Разбор лога   Найти похожие ветки 

 
lika   (2004-02-25 08:09) [0]

читаю строку(вид примерно такой),читаю через readln(f,s):
192.168.200.162, INTERNET\fedorova, Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.4.2.0), -, 2/16/2004, 0:04:20, -, PROXYSERVER, -, www.shake-cocktails.com, -, 80, 0, 599, 250, http, -, GET, http://www.shake-cocktails.com/img/general/backgrounds/main.gif, -, NotModified, 0, -, LANCLIENT, Allow rule
здесь понятно что надо затем анализировать до ", " для верности , но вот такой вопрос когда я читаю мне некоторые данные из этой строки не нужны(к примеру ненужно Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.4.2.0) и т.д.).
Как можно прочитать данную строку пропуская некоторые фрагменты(данные) чтобы программа не перебирала данный набор символов, хочу таким образом съэкономить память и увеличить быстродействие чтения.


 
olookin ©   (2004-02-25 08:58) [1]

После удаления текущего фрагмента сделать
Delete(s,1,Pos(",",s)-1)


 
Иван Николаевич Понырев   (2004-02-25 09:13) [2]

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


 
lika   (2004-02-25 09:16) [3]

Тогда как данный лог читать кусками, т.е. те куски которые мне нужны?


 
olookin ©   (2004-02-25 09:19) [4]

Куски запятой отделены? Тогда так

i: inetger;
ar: array of string;

i:=0;
while Pos(",",s)<>0 do begin
Setlength(ar,i+1);
ar[i]:=Copy(s,1,Pos(",",s)-1);
Delete(s,1,Pos(",",s)); Inc(i); end;

И в конце получаем массив логов или кусков логов или как там еще это называется


 
Erik ©   (2004-02-25 09:41) [5]

Можеш попробовать ReadBlokc + Seek, но если у тебя данные нефиксированой длины то быстродействия это неувеличит. Скорее всего readln наиболее оптимально.


 
lika   (2004-02-25 09:48) [6]

у меня данные не фиксированной длины.


 
Anatoly Podgoretsky ©   (2004-02-25 09:57) [7]

lika (25.02.04 09:16) [3]
Читать кусками неправильно, как раз путь чтения строки самый правильный, ты полцчаешь минимальную значимую единицу.

А разборку надо делать по двум разделителям - по запятой и по курглым скобкам (третье поле)


 
Anatoly Podgoretsky ©   (2004-02-25 09:59) [8]

Если лог не очень большой, не более 200 мб, то можно еще его загрузить в StringList и уже там обрабатывать по строкам в цикле.


 
lika   (2004-02-25 10:10) [9]

>>Anatoly Podgoretsky
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; Hotbar 4.4.2.0)- ЭТО ОДНА ЗАПИСЬ в логе. Логи до 200МБ точно. Но вот тут тупик если работать через СтригЛист, дело в том что при чтении может быть к примеру такая строка:
192.168.5.201, anonymous, Pattern Download Session, -, 2/11/2004, 8:00:19, -, SERVER-POST, -, wp-isa.update.trendmicro.com, -, 80, 0, 272, 4528, http, -, GET, http://wp-isa.update.trendmicro.com/WP-ISA/cgi-bin/patdownload.cgi?Serial=APGE-9999-6886-8880-5322&Version=749&vsapi,=ye s, -, -, 407, -, -, -

Где можно наблюдать что встречаются пробелы в данных лога не только как разделитель записей но и в самой записи(Pattern Download Session) т.е. при чтении я получу три разных строки вместо одной. На сколько я знаю СтрингЛист разделяет если иежду сосоедними данными есть пробел.
Поясните если я в чем то не права по не применимости СтригЛиста.


 
TUser ©   (2004-02-25 10:17) [10]

Используй рег. выражения.



Страницы: 1 вся ветка

Текущий архив: 2004.03.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
14-12524
kentavr
2004-01-23 13:38
2004.03.05
Проблема с Bitmap


1-12424
Pancha
2004-01-23 13:53
2004.03.05
Как победить время


1-12341
dr Tr0jan
2004-02-16 04:30
2004.03.05
Разукрашенная строка в TRichEdit.


3-12255
Санек
2004-02-09 13:10
2004.03.05
Доступные MS SQL сервера в сети


3-12234
Sergey Merkuriev
2004-02-09 17:53
2004.03.05
MS SQL 2000 книги или доки по русски