解决方法
我已经编写了这个例子,只用一个HTTP GET,与Indy 10,希望它与Indy 9一起工作:
uses {...} IdHTTP,IdComponent; type TFormMain = class(TForm) {...} private {...} procedure HttpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); end; {...} procedure TFormMain.Button1Click(Sender: TObject); var Http: TIdHTTP; MS: TMemoryStream; begin Http := TIdHTTP.Create(nil); try MS := TMemoryStream.Create; try Http.OnWork:= HttpWork; Http.Get('http://live.sysinternals.com/ADExplorer.exe',MS); MS.SaveToFile('C:\ADExplorer.exe'); finally MS.Free; end; finally Http.Free; end; end; procedure TFormMain.HttpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); var Http: TIdHTTP; ContentLength: Int64; Percent: Integer; begin Http := TIdHTTP(ASender); ContentLength := Http.Response.ContentLength; if (Pos('chunked',LowerCase(Http.Response.TransferEncoding)) = 0) and (ContentLength > 0) then begin Percent := 100*AWorkCount div ContentLength; MemoOutput.Lines.Add(IntToStr(Percent)); end; end;