[Delphi]Помгите вытащить из строки

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Kandi, 23 Sep 2010.

  1. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Есть строка с контакта:
    Code:
    {"rows":"<div id=\"membersContainer\"><div id=\"memRow91505135\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id91505135\"><img src=\"http:\/\/cs10167.vkontakte.ru\/u91505135\/c_70d9c7e9.jpg\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id91505135\">Марина Ахмерова<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(91505135, 119749, '99fd680c903b1d9cdb')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow91505140\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id91505140\"><img src=\"http:\/\/cs10172.vkontakte.ru\/u91505140\/c_5d36e824.jpg\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id91505140\">Ольга Абрамова<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(91505140, 119749, 'a5fbbc535e652303eb')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow91505170\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id91505170\"><img src=\"http:\/\/vkontakte.ru\/images\/question_c.gif\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id91505170\">Сергей Иванов<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(91505170, 119749, 'a2b6f3c0f0d441afea')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow91505189\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id91505189\"><img src=\"http:\/\/cs10221.vkontakte.ru\/u91505189\/c_f89d753f.jpg\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id91505189\">Людмила Прохорова<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(91505189, 119749, 'c179ea021cfa29d82a')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow91505341\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id91505341\"><img src=\"http:\/\/cs10373.vkontakte.ru\/u91505341\/c_0d405321.jpg\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id91505341\">Евгения Moroz<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(91505341, 119749, '7eaeda194dabe5461c')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow91505535\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id91505535\"><img src=\"http:\/\/vkontakte.ru\/images\/question_c.gif\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id91505535\">Рива ----<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(91505535, 119749, 'aaf3749d521adabfa1')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow91505550\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id91505550\"><img src=\"http:\/\/vkontakte.ru\/images\/question_c.gif\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id91505550\">Андрей Лохин<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(91505550, 119749, '81484656cf3630ebcb')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow91506083\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id91506083\"><img src=\"http:\/\/cs313.vkontakte.ru\/u91506083\/c_80bfbea1.jpg\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id91506083\">Alenka Abramovich<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(91506083, 119749, '05c7cce528398bebd2')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow62981651\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id62981651\"><img src=\"http:\/\/vkontakte.ru\/images\/question_c.gif\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id62981651\">Toxa Viharev<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(62981651, 119749, 'f112a107713f882654')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow62800092\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id62800092\"><img src=\"http:\/\/vkontakte.ru\/images\/question_c.gif\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id62800092\">Настя Рябова<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(62800092, 119749, '952b3e41b41b7e33af')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow62800099\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id62800099\"><img src=\"http:\/\/vkontakte.ru\/images\/question_c.gif\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id62800099\">Нина Станиславенко<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(62800099, 119749, '50ca2cd26e8dca5b5e')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow61839515\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id61839515\"><img src=\"http:\/\/vkontakte.ru\/images\/question_c.gif\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id61839515\">teo teo<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(61839515, 119749, 'a3dcd31c3fcc11e9c5')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow61839115\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id61839115\"><img src=\"http:\/\/vkontakte.ru\/images\/question_c.gif\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id61839115\">Серёжа Барбачёв<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(61839115, 119749, 'bf8b50e32ec69d4eff')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><div id=\"memRow59706906\" class=\"mem_row clearFix\">\n<table>\n<tr>\n<td class=\"img\"><a href=\"\/id59706906\"><img src=\"http:\/\/cs4457.vkontakte.ru\/u59706906\/c_1b2561e2.jpg\" \/><\/a><\/td>\n<td class=\"info\"><a class=\"memLink\" href=\"\/id59706906\">Юля Волошина<\/a>\n<br \/><span class=\"actions\"><a href=\"#\" onClick=\"return cancelInvitation(59706906, 119749, '651aba1884dcf10df7')\">Отменить<\/a><\/span><\/td>\n<td class=\"details\">\n\n<\/td>\n<\/tr>\n<\/table>\n<\/div><\/div>","summary":"1<span style=\"font-size:60%\"> <\/span>120 приглашений в группу еще не были приняты","pages":"<ul class=\"pageList\"><li class=\"current\">1<\/li><li><a href=\"groups.php?gid=119749&section=3#offset=50\" onclick=\"return getPage(50)\">2<\/a><\/li><li><a href=\"groups.php?gid=119749&section=3#offset=100\" onclick=\"return getPage(100)\">3<\/a><\/li><li><a href=\"groups.php?gid=119749&section=3#offset=1100\" onclick=\"return getPage(1100)\">&raquo;<\/a><\/li><\/ul>","section_id":3}
    
    Из которой надо достать циклом IDпользователя, IDgroup, Hash, ну так как ID группы я знаю....нужно достать IDпользователя, и hash состяпал код :
    Code:
    var
      i : integer;
      IDChar, Hash, Ost : String;
      F : TStringList;
    begin
      F := TStringList.Create;
      Memo2.Lines.LoadFromFile('groups.txt');
      F.Text:=memo2.Lines.Text;
    
        if Pos('cancelInvitation', F.Text)<>0 then
        begin
          IDChar := Copy(F.Text, Pos('(', F.Text)+1, Length(F.Text));
          IDChar := Copy(IdChar, 0, Pos(',', IdChar)-1);
          Memo1.Lines.Add('ID = '+IDChar);
        end;
        if Pos('cancelInvitation', F.Text)<>0 then
        begin
          Hash := Copy(F.Text, Pos(#39, F.Text)+1, Length(F.Text));
          Hash := Copy(Hash, 0, Pos(#39, Hash)-1);
          Memo1.Lines.Add('Hash = '+Hash);
        end;
    end;
    
    но он вытаскивает 1 id 1 hash даже если его поставить в цикл....т.к. я уже удалил в этих функциях весь код....как вытаскивать последовательно в строке эти два значения? Не могу догнать... help :confused:
     
  2. brutos

    brutos Member

    Joined:
    25 Nov 2009
    Messages:
    123
    Likes Received:
    27
    Reputations:
    8
    Могу предложить удалять то, что уже прошел. И убрать лишние переменные.
    Code:
    var
      s : String;
      F : TStringList;
    begin
      F := TStringList.Create;
      Memo2.Lines.LoadFromFile('groups.txt');
      F.Text:=memo2.Lines.Text;
    
        while Pos('cancelInvitation', F.Text)<>0 do
        begin
          s := Copy(F.Text, Pos('(', F.Text)+1, Length(F.Text));
          s := Copy(s, 0, Pos(',', s)-1);
          Memo1.Lines.Add('ID = '+s);
          s := Copy(F.Text, Pos(#39, F.Text)+1, Length(F.Text));
          s := Copy(s, 0, Pos(#39, s)-1);
          Memo1.Lines.Add('Hash = '+s);
          s:=F.Text; // Из StringList'а Delphi удалять ничего не хочет
          Delete(s,1,Pos(#39, Hash));
          F.Text:=s;
        end;
      FreeAndNil(F);
    end;
    
    Должно работать...
     
    #2 brutos, 23 Sep 2010
    Last edited: 23 Sep 2010
  3. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Code:
    procedure Memo1Change(S: String);
    var
      k,l: Integer;
    begin
    
      while Length(s)>0 do begin
        k:= pos('cancelInvitation',s);
        if k>0 then begin
          Delete(s,1,k + 17);
          l:= pos(',',s);
          Memo1.Lines.Add('ID User: ' + Copy(s,1,l-1));
          Delete(s,1,l+1);
          l:= pos(',',s);
          Memo1.Lines.Add('ID Grup: ' + Copy(s,1,l-1));
          Delete(s,1,l+2);
          l:= pos('''',s);
          Memo1.Lines.Add('Hash: ' +  Copy(s,1,l-1));
        end else Break;
      end;
    
    end;
     
  4. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Спасибо всем большое) ну посидел поковырялся и вроде бы сам догнал :)
    Вот что я натворил:
    Code:
    var
      i : integer;
      IDChar, Hash, Ost : String;
      F : TStringList;
    begin
      F := TStringList.Create;
      Memo2.Lines.LoadFromFile('groups.txt');
      F.Text:=memo2.Lines.Text;
      while Pos('cancelInvitation', F.Text)<>0 do
       begin
        if Pos('cancelInvitation', F.Text)<>0 then
        begin
          F.Text := Copy(F.Text, Pos('(', F.Text)+1, Length(F.Text));
          IDChar := Copy(F.Text, 0, Pos(',', F.Text)-1);
          F.Text := Copy(F.Text, Pos(#39, F.Text)+1, Length(F.Text));
          Hash := Copy(F.Text, 0, Pos(#39, F.Text)-1);
          Memo1.Lines.Add('ID = '+IDChar);
          Memo1.Lines.Add('Hash = '+Hash);
        end;
       end;
    end;
    
    Тему можно закрыть/удалить!
     
  5. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Совет, для таких вещей просто скачай нормальный парсер JSON и не парься, в вк во многих запросах ответ в виде JSON приходит.