المشاركات : 141
المواضيع 45
:
: 317
الإنتساب : Aug 2018
14-05-2021, 12:19 PM
(آخر تعديل لهذه المشاركة: 14-05-2021, 01:43 PM بواسطة invocker.)
السلام عليكم
احتاج مثال لعمل Download, pause and resume a download using tnethttpclient1
يكون بسيط ومفهوم مع شرح الكود
بارك الله فيكم
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
وعليكم السلام
حاول الكتابة باللغة العربية
ضمن RAD Studio Demo Code تجد مثال HttpDownloadManager
https://sourceforge.net/p/radstudiodemos
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
المشاركات : 141
المواضيع 45
:
: 317
الإنتساب : Aug 2018
بارك الله فيك اطلعت عليه سابقا لكن كنت اريد كود اكثر وضوحا وجدت كود بسيط يعتمد على Tidhttp قمت بتحويله لكن توقفت عند هذا السطر لم اعرف مقابله في tnethttpclient
idhttp.Request.Range := IntToStr(f.Position) + '-'+ IntToStr(aRangeEnd);
كود :
procedure Download(Url,LocalFile:String;
WorkBegin:TWorkBeginEvent;Work:TWorkEvent;WorkEnd:TWorkEndEvent);
var
Http: TIdHTTP;
exit:Boolean;
FLength,aRangeEnd:Integer;
begin
Http := TIdHTTP.Create(nil);
fFileStream:=nil;
try
try
Http.OnWork:= Work;
Http.OnWorkEnd := WorkEnd;
Http.Head(Url);
FLength := Http.Response.ContentLength;
exit:=false;
repeat
if not FileExists(LocalFile) then begin
fFileStream := TFileStream.Create(LocalFile, fmCreate);
end
else begin
fFileStream := TFileStream.Create(LocalFile, fmOpenReadWrite);
exit:= fFileStream.Size >= FLength;
if not exit then
fFileStream.Seek(Max(0, fFileStream.Size-4096), soFromBeginning);
end;
try
aRangeEnd:=fFileStream.Size + 50000;
if aRangeEnd < fLength then begin
Http.Request.Range := IntToStr(fFileStream.Position) + '-'+ IntToStr(aRangeEnd);
end
else begin
Http.Request.Range := IntToStr(fFileStream.Position) + '-';
exit:=true;
end;
Http.Get(Url, fFileStream);
finally
fFileStream.Free;
end;
until exit;
Http.Disconnect;
except
on E : Exception do
Begin
//Result:=False;
//AddLog(E.Message);
end;
end;
finally
Http.Free;
end;
end;