mysapta

Thread Download Image

Jun 8th, 2018
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.18 KB | None | 0 0
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.     RetStream: TStream;
  4.     Buffer: PByte;
  5.     Mem: TMemoryStream;
  6.     BytesRead: Integer;
  7.     Size: Int64;
  8.     BufSize: Integer;
  9.     LokasiGbr:string;
  10. begin
  11.   TThread.CreateAnonymousThread(
  12.   procedure
  13.     begin
  14.       LokasiGbr:='';
  15.       BufSize := 2048;
  16.           try
  17.             Mem := TMemoryStream.Create;
  18.             GetMem( Buffer, BufSize );
  19.  
  20.             LokasiGbr:=TPath.Combine(TPath.GetPublicPath+'/'+'MAP001', '1.png');
  21.  
  22.             TThread.Queue(nil,
  23.             procedure
  24.             begin
  25.               try
  26.               TThread.Queue(TThread.CurrentThread,
  27.                 procedure
  28.                 begin
  29.                   RetStream := DM.ServerMethods1Client.DownloadImage('SRC IMG LOKASI', 'MAP001', 1, Size);
  30.                 end);
  31.               if Assigned(RetStream) then RetStream.Position := 0;
  32.  
  33.                 if ( Size <> 0 ) then
  34.                 begin
  35.  
  36.                   repeat
  37.                     BytesRead := RetStream.Read( Pointer( Buffer )^, BufSize );
  38.  
  39.                     if ( BytesRead > 0 ) then
  40.                     begin
  41.                       Mem.WriteBuffer( Pointer( Buffer )^, BytesRead );
  42.                     end;
  43.                     Label1.Text := IntToStr( Mem.Size ) + '/' + IntToStr( Size );
  44.  
  45.                     Application.ProcessMessages;
  46.                   until ( BytesRead < BufSize );
  47.  
  48.                   if ( Size <> Mem.Size ) then
  49.                   begin
  50.                     raise Exception.Create( 'Not Found...' );
  51.                   end;
  52.  
  53.                   if Mem.Size<>0 then
  54.                     begin
  55.                       Mem.SaveToFile(LokasiGbr);
  56.                       MGbr.Bitmap.LoadFromFile(LokasiGbr);
  57.                     end;
  58.  
  59.                 end
  60.                 else
  61.                 begin
  62.                   ShowMessage('Not Found...!!');
  63.                 end;
  64.               finally FreeMem( Buffer, BufSize ); FreeAndNIl(Mem); end;
  65.             end);
  66.           except
  67.             on E: Exception do
  68.             begin
  69.               ShowMessage( PChar( E.ClassName + ': ' + E.Message ));
  70.             end;
  71.           end;
  72.     end).Start;
  73. end;
Add Comment
Please, Sign In to add comment