Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-12392
RUS
2004-02-24 19:32
2004.03.05
Добавление текста в колонтитулы MSWORD


1-12449
race1
2004-02-23 07:28
2004.03.05
service filename


4-12588
lefan
2003-12-26 07:04
2004.03.05
имитировать мышь и клаву...


14-12538
slippery
2004-02-13 21:42
2004.03.05
Помогите найти!!!


6-12465
Александр из Минска
2003-12-27 16:05
2004.03.05
IdTCPServer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский