Thema: Delphi Bilder herunterladen

Einzelnen Beitrag anzeigen

capo

Registriert seit: 7. Jul 2006
453 Beiträge
 
Delphi 11 Alexandria
 
#1

Bilder herunterladen

  Alt 25. Aug 2008, 20:56
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
Hotte
  Mit Zitat antworten Zitat