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

Вниз

Каким образом можно разбить эту строку на подстроки...   Найти похожие ветки 

 
georgys   (2002-12-26 15:15) [0]

Я начинающий программист и вот такой вопрос родился.
Есть вот такая строка сформированная прокси сервером.

192.168.99.254 - oleg [23/Dec/2002:21:15:12 +0300] "GET http://counter.rambler.ru/top100.cnt?294098 HTTP/1.0" 200 936

Как ее разбить на составляющие?


 
Reindeer Moss Eater   (2002-12-26 15:16) [1]

Pos, Copy, Delete ......


 
Song   (2002-12-26 15:18) [2]

WrapText()


 
georgys   (2002-12-26 15:18) [3]

А поподробнее можно? Я пробовал, но у меня получается выдернуть только ip адрес, а все остальное пропадает куда то... :-(


 
Reindeer Moss Eater   (2002-12-26 15:25) [4]

А самому поподробнее можно?
Куда пропадает?


 
georgys   (2002-12-26 15:27) [5]


while NOT EOF(f) do begin
readln(f,s);
for i:=1 to n+1 do begin
p:=pos(" ",s);
buf:=copy(s,p+1,Length(s)-p);
end;
Memo1.Lines.Add(buf);
end;


Вот так вот делаю. Но все остальное пропадает.


 
gek   (2002-12-26 15:31) [6]

Если ты по пробелам ориентируешься и только то лучше все же
WrapText() и т.п.
Посм в help



 
Reindeer Moss Eater   (2002-12-26 15:32) [7]

Что такое N и чему оно равно?
Твой Pos N-раз подряд находит позицию первого пробела.
Зачем это?


 
georgys   (2002-12-26 15:35) [8]

n=0;

а почему он только первый пробел ищет?


 
Reindeer Moss Eater   (2002-12-26 15:37) [9]

Потому что два параметра у него: что искать и где. Какое по счету вхождение искать он (Pos) не знает.


 
georgys   (2002-12-26 15:41) [10]

Так. Но каким же тогда образом мне все это разделить на подстроки и распихать по массивам? Я так понял, что WrapText() мне не подойдет, он же только вместо чего то вставляет другое чего то. А смысл?


 
Reindeer Moss Eater   (2002-12-26 15:44) [11]

Имеем строку.
Находим первый пробел слева.
Копируем все что левее пробела в переменную
Удаляем все с начала строки до позиции пробела, включая и его самого.
Начинаем все сначала, не забыв вовремя остановиться


 
georgys   (2002-12-26 15:49) [12]

Ага. Понял. Попробую. Спасибо.


 
Anatoly Podgoretsky   (2002-12-26 15:51) [13]

georgys © (26.12.02 15:35)
У тебя цикл от 1 до 1, и уже неважно, что у тебя внутри цикла
И тут нельзя искать по пробелу, не все пробелы в данной структуре являются разделителями, есть еще и [] и "..."


 
Skier   (2002-12-26 16:06) [14]

TTriada = packed record
tFirstPart : String;
tSecondPart : String;
tThirdPart : String;
end;

//...................

procedure TForm1.Button3Click(Sender: TObject);

function SplitStr(const AStrToSplit : String) : TTriada;
var
AHTTPPos : Integer;
ii : Integer;
begin
FillChar(Result, SizeOf(TTriada), 0);
if AStrToSplit = EmptyStr then Exit;
AHTTPPos := Pos("http:", AStrToSplit);
if AHTTPPos = 0 then Exit;
ii := AHTTPPos;
while AStrToSplit[ii] <> " " do begin
Result.tSecondPart := Result.tSecondPart + AStrToSplit[ii];
Inc(ii);
end; //while
Result.tFirstPart := Copy(AStrToSplit, 1, AHTTPPos - 1);
Result.tThirdPart := Copy(AStrToSplit, ii, Length(AStrToSplit));
end;

var
ATriada : TTriada;
begin
ATriada := SplitStr("192.168.99.254 - oleg [23/Dec/2002:21:15:12 +0300] "GET http://counter.rambler.ru/top100.cnt?294098 HTTP/1.0" 200 936");
WriteLn(ATriada.tFirstPart);
WriteLn(ATriada.tSecondPart);
WriteLn(ATriada.tThirdPart);
end;


 
georgys   (2002-12-26 16:07) [15]

Спасибо всем большое. У меня уже получилось. Только вот теперь придется каким то образом выдерать ненужные символы.


 
georgys   (2002-12-26 16:15) [16]

Спасибо всем большое. У меня уже получилось. Только вот теперь придется каким то образом выдерать ненужные символы.


 
smok_er   (2002-12-26 16:45) [17]

а не проще ли воспользоваться регэкспрами?



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

Форум: "Основная";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.006 c
1-24908
NAN
2002-12-25 07:48
2003.01.09
Вопрос про сообщение NAN?


1-24876
smok_er
2002-12-27 19:24
2003.01.09
Чтение информации о файле по HTTP-протоколу


4-25162
Kors
2002-11-20 12:41
2003.01.09
сообщения и ошибки


1-24838
n/a.STealth
2002-12-25 15:15
2003.01.09
TNotifyEvent


14-25098
Igor_thief
2002-12-22 12:20
2003.01.09
Защитные очки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский