Показать сообщение отдельно
  #12  
Старый 16.01.2013, 16:50
caHek-2x caHek-2x вне форума
Прохожий
 
Регистрация: 14.12.2010
Сообщения: 31
Репутация: 11
По умолчанию

да не авторизовывалось из за этих файлов ...

Код:
procedure TForm5.Button1Click(Sender: TObject);
var
  I: Integer;
  gg: String;
  j: Integer;
  iskl: boolean;
  vk: TVKClient;
  templist: TStringList;
  grouplist: TStringList;
  iskluchenie: TStringList;
begin
  vk := TVKClient.Create(nil); // создаём компонент
  vk.Format := XML; // настраиваем формат возвращаемых данных (JSON или XML)
  vk.Login := 'логин';
  vk.Password := 'пароль';

  If vk.OnLogin then//авторизовываемся и если авторизация прошла то ...
  begin
    showmessage('авторизовались');

    templist := TStringList.Create;
    grouplist := TStringList.Create;
    iskluchenie := TStringList.Create;

    vk.groups_get('', '', '', '', '', ''); // читаем все группы
//добавляем иды групп исключений ...
//добавил для примера http://vk.com/club27019565
//и http://vk.com/club28546855
//можешь посчитывать из мемо или еще откуда .. .если не поймешь короче напиши обьясню ...
    iskluchenie.Add('27019565');
    iskluchenie.Add('28546855');

    templist.Text := vk.Response.Text; // в vk.Response находится ответ сервера после выполнения функций запроса всех групп

//==============================
//в этом блоке ответ с сервера обрабатываем занося в список grouplist только иды без лишних тегов ...
    for I := 0 to templist.Count - 1 do
    begin
      if (Pos('<gid>', templist[i]) > 0) then
      begin
        gg := templist[i];
        Delete(gg, Pos('<gid>', gg), 5);
        Delete(gg, Pos('</gid>', gg), 6);
        Delete(gg, Pos(' ', gg), 1);
        grouplist.Add(gg);
//это открытие в браузере всех групп ... т.к. тестил на себе открыл чтобы потом опять вступить ...
        ShellExecute(handle, 'open', PWideChar('http://vk.com/club' + gg), nil, nil, SW_SHOW)
      end;
    end;
//==============================
    ShowMessage('После нажатия окей ... все группы удалять ...');//вместо этого можно диалог с вопросом поставить и тд ... сам придумаешь или спросишь если что. ..
//==============================
//этот блок выйдит из всех групп что хранятся в grouplist ... но проверив перед выходом не входит ли группа в список исключений ...
    for I := 0 to grouplist.Count - 1 do
    begin
      iskl := false;
//вот блок проверки исключений ...
      for j := 0 to iskluchenie.Count - 1 do
        if grouplist[i] = iskluchenie[j] then
        begin
          iskl := true;
        end;

      if iskl = false then
      begin
        vk.groups_leave(grouplist[i]);
      end;

    end;
//==============================
//выводим список идов всех групп в мемо ...
    Memo1.Text := grouplist.Text;
  end;

  templist.Free;
  grouplist.Free;
  vk.Free;
end;


ну както так ... если что не понятно спрашивай ...
на себе протестил ... все норм .. .)
Ответить с цитированием