type
TSKS = class(TThread)
HTTP, HTTP2: TIdHTTP;
NamePack, AutorPack, FilePack, UrlScren, UrlVideo, SizeFile: String;
Size: integer;
Int: integer;
bmp: TBitmap;
ImgBuf: TMemoryStream;
Picture: TWICImage;
Test: String;
procedure SyncronizeSKS;
protected
procedure Execute; override;
end;
procedure TSKS.Execute;
var
EnumSkins_JSON: TJSONArrayEnumerator;
LJsonArr: TJSONArray;
begin
HTTP := TIdHTTP.Create(nil);
HTTP.AllowCookies := True;
HTTP.HandleRedirects := True;
HTTP.ProtocolVersion := pv1_1;
HTTP.ReadTimeout := 10000;
HTTP.ConnectTimeout := 10000;
HTTP.Request.UserAgent := ShowFormWoTArchive.Caption;
HTTP.Request.CacheControl := 'no-cache';
HTTP2 := TIdHTTP.Create(nil);
HTTP2.AllowCookies := True;
HTTP2.HandleRedirects := True;
HTTP2.ProtocolVersion := pv1_1;
HTTP2.ReadTimeout := 10000;
HTTP2.ConnectTimeout := 10000;
HTTP2.Request.UserAgent := ShowFormWoTArchive.Caption;
HTTP2.Request.CacheControl := 'no-cache';
Picture := TWICImage.Create;
ImgBuf := TMemoryStream.Create;
bmp := TBitmap.Create;
try
{Test := SKSIO.AsString;}
LJsonArr := TJSONObject.ParseJSONValue(HTTP.Get('ссылка на сервер API')) as TJSONArray;
EnumSkins_JSON := TJSONArrayEnumerator.Create(LJsonArr);
while EnumSkins_JSON.MoveNext do
begin
ImgBuf.Position := 0;
NamePack := (EnumSkins_JSON.GetCurrent as TJSONObject).Values['name'].value;
UrlScren := (EnumSkins_JSON.GetCurrent as TJSONObject).GetValue('url_screenshot').Value;
HTTP2.Get(Trim(UrlScren), ImgBuf);
UrlVideo := (EnumSkins_JSON.GetCurrent as TJSONObject).GetValue('url_video').Value;
FilePack := (EnumSkins_JSON.GetCurrent as TJSONObject).GetValue('url_archive').Value;
AutorPack := (EnumSkins_JSON.GetCurrent as TJSONObject).GetValue('author').Value;
SizeFile := (EnumSkins_JSON.GetCurrent as TJSONObject).GetValue('size').Value;
Picture.LoadFromStream(ImgBuf);
bmp.Assign(Picture);
Synchronize(SyncronizeSKS);
end;
finally
HTTP.Disconnect;
HTTP.Free;
HTTP2.Disconnect;
HTTP2.Free;
Picture.Free;
ImgBuf.Free;
bmp.Free;
LJsonArr.Free;
EnumSkins_JSON.Free;
end;
end;
procedure TSKS.SyncronizeSKS;
begin
// Переменные внутри Потока Thread""
{TestTo := Test;
Showmessage(TestTo);}
NamePackTo := NamePack;
AutorPackTo := AutorPack;
SizeFileTo := SizeFile;
FilePackTo := FilePack;
UrlScrenTo := UrlScren;
UrlVideoTo := UrlVideo;
ShowFormWoTArchive.ListImage.Add(bmp, nil);
ShowFormWoTArchive.AddNewItems(1);
end;
Поток, INDY загрузка изображении и последующая выгрузка в ImageList
Привет всем, кто нибудь знает как правильно в потоке загружать через INDY изображения и выводить их ImageList?
Вот что я реализовал, правильно ЛИ?
У тебя работает? Если работает, значит, правильно, если не работает -- неправильно, логично же... :)
Цитата: Alexander92
У тебя работает? Если работает, значит, правильно, если не работает -- неправильно, логично же... :)
Данный код не срабатывает в скомпилированной программе на базе Windows XP SP3, на остальных ОС выше, прекрасно выгружается в ListView и показывает...
Мне нужна подсказка... все правильно ли я построил)))