Здравствуйте, вот решил наконец-то вернуться к написанию статей о проекте VK в Delphi. Давненько я не писал, но вот решил закончить серию статье по работе со стеной пользователя. На этот раз мы рассмотрим как можно удалять сообщения со стены пользователя. По умолчанию мы будем рассматривать текущего пользователя, а точнее самого себя, то есть будем удалять сообщения со своей стены. Довольно похожий метод API VK на остальные, даже параметры почти одни и теже, называется данный метод

  • wall.delete

Ну а теперь давайте  пройдемся немного по параметрам

  • api_id - идентификатор приложения
  • sig - подпись безопастности
  • v - версия API. В документации АПИ написана 2.0, но на самом деле рабочая — 3.0
  • owner_id - идентификатор пользователя, по-умолчанию текущий пользователь, то есть мы
  • mid - идентификатор сообщения, которое необходимо удалить
  • test_mode - если равен 1, то разрешается тестовые запросы к данным приложения

Далее на вкладку «Стена» я установил еще следующие комопненты

TListBox

TButton

Вы спросите для чего еще 1 TListBox - для того, чтобы отображать для каждого сообщения идентификаторы сообщений, по которым мы будем потом их удалять.

На кнопку получения сообщений я дописал код, чтобы можно было еще и получать идентификатор сообщений

procedure TForm1.Button15Click(Sender: TObject);
var
 sig:string;
 i:integer;
begin
   try
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788count=100format=JSONmethod=wall.getv=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Clear;
    PostVK.Add('api_id=1918788');
    PostVK.Add('sig='+sig);
    PostVK.Add('v=3.0');
    PostVK.Add('method=wall.get');
    PostVK.Add('format=JSON');
    PostVK.Add('count=100');
    PostVK.Add('sid='+Pchar(LabelSid.Caption));
    logVK:=IdHTTP1.Post('http://api.vkontakte.ru/api.php',PostVK);
    //ShowMessage(logVK);
    i:=1;
    ListBox6.Clear;
    //ShowMessage(logVK);
    while i<=length(logVK) do
     begin
      if pos('"text":',logVK)<>0 then
       begin
        ListBox6.Items.Add(Utf8ToAnsi(Pars(logVK,'"text":','"',0)));
        ListBox7.Items.Add(Pars(logVK,'"id"','"',1));
        Delete(LogVK,1,pos('"text"',logVK));
        i:=0;
       end;
      inc(i);
     end;
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;

А на кнопку удаления сообщений я написал следующий код

procedure TForm1.Button16Click(Sender: TObject);
var
 sig:string;
 i:integer;
begin
   try
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmessage='+AnsiToUtf8(Edit6.Text)+'method=wall.postowner_id='+Edit5.Text+'v=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Clear;
    PostVK.Add('api_id=1918788');
    PostVK.Add('sig='+sig);
    PostVK.Add('v=3.0');
    PostVK.Add('method=wall.post');
    PostVK.Add('format=XML');
    PostVK.Add('message='+AnsiToUtf8(Edit6.Text));
    PostVK.Add('owner_id='+Edit5.Text);
    PostVK.Add('sid='+Pchar(LabelSid.Caption));
    logVK:=IdHTTP1.Post('http://api.vkontakte.ru/api.php',PostVK);
    if pos('error_code',logVK)=0 then
     begin
      Showmessage('Message send');
     end
    else
     begin
      ShowMessage('Not message send');
     end;
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;
 
procedure TForm1.Button17Click(Sender: TObject);
var
 sig:string;
 i:integer;
begin
   try
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmethod=wall.deletemid='+ListBox7.Items[ListBox7.ItemIndex]+'v=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Clear;
    PostVK.Add('api_id=1918788');
    PostVK.Add('sig='+sig);
    PostVK.Add('v=3.0');
    PostVK.Add('method=wall.delete');
    PostVK.Add('format=XML');
    PostVK.Add('mid='+ListBox7.Items[ListBox7.ItemIndex]);
    PostVK.Add('sid='+Pchar(LabelSid.Caption));
    logVK:=IdHTTP1.Post('http://api.vkontakte.ru/api.php',PostVK);
    ShowMessage(logVK);
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;

Естественно удалить можно только после того, как получите список сообщений и выделите в TListBox идентификатор сообщения, который необходимо удалять. Не забываем составлять подпись в алфавитном порядке

Хочу заметить, что в настоящее время очень популярен спорт, различные фитнесы и бассейн. Это отличный способ провести время потренироваться и отдохнуть. Физическая нагрузка нужна в любом возрасте и при любой работе, особенно если это «сидячая» работа.

Исходники полного проекта качаем тут

Автор статьи - Andrеy53

Метки: , , , , ,

Оставить комментарий

Вы можете использовать следующие теги:

*