Hallo,
ich muss auf einem Server Bilder herunterladen.
In der ersten Zeile eines Stringgrids stehen untereinander die Bildnamen:
Zitat:
5710805.jpg
4126554.jpg
4122607.jpg
4120161.jpg
4120149.jpg
4120138.jpg
4118747.jpg
4118656.jpg
4112252.jpg
4112241.jpg
4126554.jpg
Ich verwende folgendes Beispiel:
Delphi-Quellcode:
function GetFile(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: string;
begin
Result:=False;
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
InternetReadFile(hURL, @Buffer,
SizeOf(Buffer), BufferLen);
BlockWrite(f, Buffer, BufferLen)
until BufferLen = 0;
CloseFile(f);
Result:=True;
finally
InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end
end;
Das klappt auch soweit, ist nur mega langsam.
Ich mache das so:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var i,
ib :integer;
begin
for i := 1
to StringGrid1.RowCount - 1
do
begin
if stringgrid1.GetCheckBoxState(0, i, state)
then
begin
if state = true
then
Memo1.Lines.add(Stringgrid1.Cells[1, i]);
for ib := 0
to memo1.lines.count - 1
do
begin
GetFile('
http://server/bilder/'+ memo1.lines.strings[
ib]+ '
.jpg','
C:\temp\'+ memo1.lines.strings[
ib]+ '
.jpg');
end;
end;
end;
end;
Gibt es eine schnellere Methode wie ich die Bilder downloaden kann?
Grüße
Capo