Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi IdHTTP.Post-没有进度,我无法在进度栏中显示_Delphi_Http_Progress Bar_Http Post_Indy - Fatal编程技术网

Delphi IdHTTP.Post-没有进度,我无法在进度栏中显示

Delphi IdHTTP.Post-没有进度,我无法在进度栏中显示,delphi,http,progress-bar,http-post,indy,Delphi,Http,Progress Bar,Http Post,Indy,我试图显示来自TIdHTTP组件的POST调用的进度 procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); begin ProgressBar1.Position := AWorkCount; end; procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCo

我试图显示来自TIdHTTP组件的POST调用的进度

procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
begin
ProgressBar1.Position := AWorkCount;
end;

procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
Progressbar1.Max := AWorkCountMax;
end;
然而,当我调试这个时,我在
.Max=AWorkCountMax行,第一次值为65,第二次值为0

我知道这可能不必要,因为它不需要很长时间,但取决于返回的数据量,它可能需要很长时间。

begin

procedure TForm1.IdHTTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
   if AWorkMode = wmRead then 
   begin
      ProgressBar.Max := AWorkCountMax; 
      ProgressBar.Position := 0; 
   end;
end;
特兰弗特

procedure TForm1.IdHTTPWork(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
   if AWorkMode=wmRead then 
     ProgressBar.Position := AWorkCount;
end;
结束


嗯,我认为这是因为它无法确定实际大小,因为输出是动态创建的。这是正确的<当Indy事先不知道需要多少数据时,code>AWorkCountMax
为零。在HTTP中,这通常意味着服务器以块的形式发送应答数据(应答包含
传输编码:chunked
头)。当
AWorkCountMax
为零时,您应该使用不同的UI来显示
AWorkCount
的实际值,这是到目前为止传输的总字节数。@Remy-通过向我的php脚本添加一个头,它修复了它。:)
procedure TForm1.IdHTTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
  ProgressBar.Position := 0;
end;