Проект VK API в Delphi. Удаление сообщений со стены

5 минут на чтение

Здравствуйте, вот решил наконец-то вернуться к написанию статей о проекте 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('https://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('https://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('https://api.vkontakte.ru/api.php',PostVK);
    ShowMessage(logVK);
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;

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

Facebook Vk Ok LinkedIn Telegram

Похожие записи:

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