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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
8-24979
PEC
2002-09-23 14:58
2003.01.09
Привет народ !


14-25062
Kotka
2002-12-19 21:25
2003.01.09
Мне интересно ваше мнение...


7-25108
AddMean
2002-09-14 00:20
2003.01.09
Как работать c FAT


14-25096
Mik.rob
2002-12-21 23:08
2003.01.09
Как работать с Active Skin


14-25039
JurMax
2002-12-18 22:29
2003.01.09
Компонент типа DateTimePicker для БД