Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2011, 12:03   #1
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию Парсинг

Доброго времени суток.
Есть список вида
Program: Opera
Url/Host: http://www
Login: yyyyyyyy
Password: xxxxxxxxx
Computer: ADMIN-878149829
Date: 2010-11-12 15:35:54
Ip: 77.52.239.143
----------------------------------------------------------
Program: Opera
Url/Host: http://www.
Login: yyyyyyyy
Password: xxxxxxxxx
Computer: ADMIN-878149829
Date: 2010-11-12 15:35:52
Ip: 77.52.239.143
----------------------------------------------------------
Program: Opera
Url/Host: http://www
Login: yyyyyyyy
Password: xxxxxxxxx
Computer: ADMIN-878149829
Date: 2010-11-12 15:35:51
Ip: 77.52.239.143


Как спарсить оттуда значения Login, Password и URL ?
DeDoK вне форума Ответить с цитированием
Старый 02.02.2011, 12:27   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Ну, например, можно исходный текст загнать в Мемо, а потом его пропарсить с помощью класса TParser... Это в Delphi...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 02.02.2011, 12:35   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

или просто через Copy(...) забрать.
Код:
var i: Integer; s, s1: string;
begin
  for i := 0 to memo1.Lines.Count - 1 do
  begin
    s:= Memo1.Lines.Strings[i];
    s1 := 'Login:';
    if Copy(s, 1, Length(s1)) = s1 then
      Memo2.Lines.Add(Copy(s, Length(s1) + 1, Length(s)));
  end;
end;
Способов много.
_SERGEYX_ вне форума Ответить с цитированием
Старый 02.02.2011, 12:38   #4
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

делал так
Код:
var
i,j,k : Integer;
login : string;
pass : string;
url : string;
begin

for i:=0 to Memo1.Lines.Count do
begin
if Pos('Login: ', memo1.Lines[i])>0 then
Login:=Memo1.Lines[i];
end;

for j:=0 to Memo1.Lines.Count do
begin
if Pos('Password: ', memo1.Lines[j])>0 then
pass:=Memo1.Lines[j];
end;

for k:=0 to Memo1.Lines.Count do
begin
if Pos('Url/Host: ', memo1.Lines[k])>0 then
url:=Memo1.Lines[k];
end;

Memo2.Lines.Add(login+':'+pass+'@'+url)
end;
Берет только последнюю часть списка... Где ошибка?
DeDoK вне форума Ответить с цитированием
Старый 02.02.2011, 12:44   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Ну, дык, конечно...
Код:
for i:=0 to Memo1.Lines.Count do
begin
if Pos('Login: ', memo1.Lines[i])>0 then

Login:=Memo1.Lines[i];
{!!!! Здесь Login каждый раз будет принимать
значение строки в Memo1.
Строка ведь нигде не сохраняется }
end;
К тому же строка будет в виде
Password: xxxxxxxxx
Как я понимаю, тебе нужно только
xxxxxxxxx

Последний раз редактировалось _SERGEYX_; 02.02.2011 в 12:46.
_SERGEYX_ вне форума Ответить с цитированием
Старый 02.02.2011, 12:52   #6
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

_SERGEYX_, попробовал по вашему методу.
Код:
var
i: Integer;
s, s1, s2, s3: string;
l,p,u : string;
begin
  for i := 0 to memo1.Lines.Count - 1 do
  begin
    s := Memo1.Lines.Strings[i];
    s1 := 'Login: ';
    s2 := 'Password: ';
    s3 := 'Url/Host: ';
    if Copy(s, 1, Length(s1)) = s1 then
    l:=Copy(s, Length(s1) + 1, Length(s));
    if Copy(s, 1, Length(s2)) = s2 then
     p:=Copy(s, Length(s2) + 1, Length(s));
    if Copy(s, 1, Length(s3)) = s3 then
      u:=Copy(s, Length(s3) + 1, Length(s));
    Memo2.Lines.Add(l+':'+p+'@'+u);

  end;
Получил в результате не то (
DeDoK вне форума Ответить с цитированием
Старый 02.02.2011, 13:04   #7
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Быстро сбацано (так что на оптимизацию не ругайтесь ):
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,k,count_info,i2 : Integer;
login : array [0..100] of string;
pass : array [0..100] of string;
url : array [0..100] of string;
begin

count_info := 0;
//SetLength(login, Memo1.Lines.Count);
//SetLength(pass, Memo1.Lines.Count);
//SetLength(url, Memo1.Lines.Count);

 for i:=0 to Memo1.Lines.Count do
  begin
    if Pos('Login: ', memo1.Lines[i])>0 then
     begin
       Login[count_info]:=copy(Memo1.Lines.Strings[i], length('Login:  '), length(Memo1.Lines.Strings[i]) - length('Login: '));
       inc(count_info);
     end;
  end;

 count_info := 0;
 for j:=0 to Memo1.Lines.Count do
  begin
   if Pos('Password: ', memo1.Lines[j])>0 then
     begin
       pass[count_info]:=copy(Memo1.Lines.Strings[j], length('Password:  '), length(Memo1.Lines.Strings[j]) - length('Password: '));
       inc(count_info);
     end;
  end;

 count_info := 0;
 for k:=0 to Memo1.Lines.Count do
  begin
    if Pos('Url/Host: ', memo1.Lines[k])>0 then
     begin
       url[count_info]:=copy(Memo1.Lines.Strings[k], length('Url/Host:  '), length(Memo1.Lines.Strings[k]) - length('Url/Host: '));
       inc(count_info);
     end;
  end;

 for i2 := 0 to count_info-1 do Memo2.Lines.Add(login[i2]+':'+pass[i2]+'@'+url[i2]);
end;
zotox вне форума Ответить с цитированием
Старый 02.02.2011, 13:13   #8
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Ну, и вот еще до кучи...
Код:
procedure TForm1.RzBitBtn2Click(Sender: TObject);
var i: Integer; s1,s2,s3: string;
l,p,u : string;
begin
  for i := 0 to memo1.Lines.Count - 1 do
  begin
    s1 := 'Login:';
    s2 := 'Password:';
    s3 := 'Url/Host:';
    if Copy(Memo1.Lines.Strings[i], 1, Length(s3)) = s3 then
    begin
      u:= Copy(Memo1.Lines.Strings[i], Length(s3) + 2, 100);
      l:= Copy(Memo1.Lines.Strings[i+1], Length(s1) + 2, 100);
      p:= Copy(Memo1.Lines.Strings[i+2], Length(s2) + 2, 100);
      Memo2.Lines.Add(l+':'+p+'@'+u);
    end;
  end;
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 02.02.2011, 14:20   #9
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

спасибо заработало
DeDoK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг DJ_LINZA Работа с сетью в Delphi 6 31.01.2011 10:15
Парсинг. igor90 Microsoft Office Excel 1 03.11.2010 02:41
Парсинг XML [Smarik] Общие вопросы Delphi 6 13.03.2010 17:38