Главная страница
    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.48 MB
Время: 0.006 c
1-24900
d_oleg
2002-12-25 12:13
2003.01.09
Balloon hint


14-25081
hatchy
2002-12-21 16:02
2003.01.09
Помогите сделать одну штуку......


14-25046
[666]VaaL
2002-12-20 13:41
2003.01.09
Потоки


3-24786
ramil
2002-12-14 16:24
2003.01.09
Multiple records found but only one expected...


14-25019
Delirium
2002-12-19 16:32
2003.01.09
Download DevExpress QuantumGrid 4.0 For Delphi 7





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