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

Здравствуйте, вот решил наконец-то вернуться к написанию статей о проекте 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 идентификатор сообщения, который необходимо удалять. Не забываем составлять подпись в алфавитном порядке
Добавлено: 15 Августа 2013 06:25:23 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...