Главная страница
    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.6 MB
Время: 0.036 c
3-24787
Карелин Артем
2002-12-16 13:53
2003.01.09
Кэширование???


3-24816
DmitryB
2002-12-17 08:51
2003.01.09
UDF


1-24966
Ipx
2002-12-27 09:20
2003.01.09
Как заменить ICO в заголовке формы на анимированный GIF?


1-24885
Alexander Vasjuk
2002-12-24 18:02
2003.01.09
RichEdit в ActiveX


1-24900
d_oleg
2002-12-25 12:13
2003.01.09
Balloon hint





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