Мне лень переделывать код, чтобы он под твою программу подошел. Думаю смысл кода ясен будет, если ты сам смог написать код выше.
P.S: Я этот код писал года два назад и там много лишнего, не копипасти его. А просто алгоритм пойми.
function Pars(ForS, T_, _T: string): string;
var
a, b: integer;
begin
Result := '';
if (T_ = '') or (ForS = '') or (_T = '') then
Exit;
a := Pos(T_, ForS);
if a = 0 then
Exit
else
a := a + Length(T_);
ForS := Copy(ForS, a, Length(ForS) - a + 1);
b := Pos(_T, ForS);
if b > 0 then
Result := Copy(ForS, 1, b - 1);
end;
function SendData(name,params: string):boolean;
var HTTP:THTTPSend;
begin
HTTP:=THTTPSend.Create;
HTTP.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1';
HTTP.Protocol:='1.1';
HTTP.HTTPMethod('GET', 'https://api.vk.com/method/'+name+'?'+params+'&access_token='+token);
Response.LoadFromStream(HTTP.Document);
Response.Text:=StringReplace(Response.Text,'\','',[rfreplaceall,rfignorecase]);
HTTP.Free;
end;
var
FormData : TIdMultiPartFormDataStream;
d,g,Res,server,photos_list,hash:string;
vk:tvkclient;
HTTP:TIdHTTP;
begin
vk:=tvkclient.Create(nil);
vk.Login:='';
vk.Password:='';
vk.OnLogin;
token:=vk.VKToken;
cook:=vk.vk_cook;
SendData('photos.getUploadServer','album_id=122885845&group_id=46859739');
if OpenDialog1.Execute then
begin
FormData := TIdMultiPartFormDataStream.Create;
HTTP.Request.CustomHeaders.Add('Cookie: '+cook);
HTTP.AllowCookies:=false;
FormData.AddFile('file', OpenDialog1.FileName, 'multipart/form-data');
g:=Response.Text;
Res := HTTP.Post(Pars(g,'upload_url":"','"'), FormData);
Res:=StringReplace(Res,'\','',[rfreplaceall,rfignorecase]);
server:=Pars(Res,'server":',',');
photos_list:=Pars(Res,'photos_list":"','","aid');
hash:=Pars(Res,'hash":"','"');
SendData('photos.save','album_id=166911641&group_id=46859739&server='+server+'&photos_list='+photos_list+'&hash='+hash);
Mmo1.Text:=response.Text;
FormData.Free;
end;