Ho necessità di effettuare il download di un file. Il codice che ho utilizzato e il seguente.
Vorrei utilizzare una progressbar. Per ottenere l'avanzamento non è un problema e ho gia modificato il codice. Il problema che non riesco a risolvere è la determinazione del MaxValue della barra.
QUalcuno potrebbe aiutarmi? Grazie a tutti.
function GetInetFile ( fileURL, FileName: String;G:TGauge): boolean;
const BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
Incremento:Integer;
f: File;
sAppName: string;
begin
Result:=False;
sAppName := ExtractFileName(Application.ExeName);
hSession := InternetOpen(PChar(sAppName),INTERNET_OPEN_TYPE_PR ECONFIG,nil, nil, 0);
try
hURL := InternetOpenURL(hSession,PChar(fileURL),nil,0,0,0) ;
try
AssignFile(f, FileName);
Rewrite(f,1);
G.MaxValue:=5;
repeat
InternetReadFile(hURL, @Buffer,SizeOf(Buffer), BufferLen);
G.Progress:=G.Progress + ((filesize (f) div 10000)-Incremento);
Incremento:= Filesize (f) div 10000;
BlockWrite(f, Buffer, BufferLen);
Application.ProcessMessages;
until BufferLen = 0;
CloseFile(f);
Result:=True;
finally
InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end
end;