Nel caso "1" ci vuole qualcosa tipo questo
codice:
function GetInetFile (const fileURL, FileName: String;i_dimensione:integer=0): boolean;
const
BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: string;
scaricati:integer;
begin
frmlog.memlog.lines.clear;
frmlog.memlog.lines.add('Scaricamento da internet (si può premere STOP)');
if i_dimensione>0 then
frmlog.memlog.lines.add( 'Byte da trasferire '+(numeroconpuntini(i_dimensione)));
frmlog.show;
salvabtnstop;
frmlog.btnstop.enabled:=true;
application.processmessages;
if i_dimensione>0 then
frmlog.pgrprogressototale.max:=i_dimensione;
deletefile(pchar(filename));
result := false;
scaricati:=0;
sAppName := ExtractFileName(Application.ExeName) ;
hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0) ;
try
hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0) ;
try
AssignFile(f, FileName) ;
Rewrite(f,1) ;
repeat
if not frmlog.btnstop.enabled then break;
function GetInetFile (const fileURL, FileName: String;i_dimensione:integer=0): boolean;
const
BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: string;
scaricati:integer;
begin
frmlog.memlog.lines.clear;
frmlog.memlog.lines.add('Scaricamento da internet (si può premere STOP)');
if i_dimensione>0 then
frmlog.memlog.lines.add( 'Byte da trasferire '+(numeroconpuntini(i_dimensione)));
frmlog.show;
salvabtnstop;
frmlog.btnstop.enabled:=true;
application.processmessages;
if i_dimensione>0 then
frmlog.pgrprogressototale.max:=i_dimensione;
deletefile(pchar(filename));
result := false;
scaricati:=0;
sAppName := ExtractFileName(Application.ExeName) ;
hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0) ;
try
hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0) ;
try
AssignFile(f, FileName) ;
Rewrite(f,1) ;
repeat
//// ECCOLO QUI
if not frmlog.btnstop.enabled then break;
/////////////////
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen) ;
BlockWrite(f, Buffer, BufferLen);
if i_dimensione>0 then
begin
frmlog.memlog.lines[2]:= 'Scaricamento '+(numeroconpuntini(scaricati))+' bytes';
frmlog.pgrprogressototale.position:=scaricati;
end
else
frmlog.memlog.lines[1]:= 'Scaricamento '+trim(numeroconpuntini(scaricati))+' bytes';
application.processmessages;
scaricati:=scaricati+bufferlen;
application.processmessages;
until BufferLen = 0;
CloseFile(f) ;
result := True;
finally
InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end;
if not frmlog.btnstop.enabled then
begin
deletefile(pchar(filename));
end;
frmlog.btnstop.enabled:=true;
ripristinabtnstop;
frmlog.hide;
end;
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen) ;
BlockWrite(f, Buffer, BufferLen);
if i_dimensione>0 then
begin
frmlog.memlog.lines[2]:= 'Scaricamento '+(numeroconpuntini(scaricati))+' bytes';
frmlog.pgrprogressototale.position:=scaricati;
end
else
frmlog.memlog.lines[1]:= 'Scaricamento '+trim(numeroconpuntini(scaricati))+' bytes';
application.processmessages;
scaricati:=scaricati+bufferlen;
application.processmessages;
until BufferLen = 0;
CloseFile(f) ;
result := True;
finally
InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end;
if not frmlog.btnstop.enabled then
begin
deletefile(pchar(filename));
end;
frmlog.btnstop.enabled:=true;
ripristinabtnstop;
frmlog.hide;
end;
E' un po' brutale, ma penso si capisca