|  | 
|      | 
|   | 
| Сохранить все картинки TWebBrowserDelphi , Интернет и Сети , БраузерСохранить все картинки TWebBrowser
Оформил: DeeCo 
uses
   UrlMon;
 function DownloadFile(SourceFile, DestFile: string): Boolean;
 begin
   try
     Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0,
       nil) = 0;
   except
     Result := False;
   end;
 end;
 procedure TForm1.Button1Click(Sender: TObject);
 var
   k, p: Integer;
   Source, dest, ext: string;
 begin
   for k := 0 to WebBrowser1.OleObject.Document.Images.Length - 1 do
   begin
     Source := WebBrowser1.OleObject.Document.Images.Item(k).Src;
     p := LastDelimiter('.', Source);
     ext := UpperCase(Copy(Source, p + 1, Length(Source)));
     if (ext = 'GIF') or (ext = 'JPG') then
     begin
       p  := LastDelimiter('/', Source);
       dest := ExtractFilePath(ParamStr(0)) + Copy(Source, p + 1,
         Length(Source));
       DownloadFile(Source, dest);
     end;
   end;
 end;Here is the translation of the text into Russian: Это программный код на Delphi, который использует компонент TWebBrowser для скачивания всех изображений (GIF и JPG) с веб-страницы. Изображения скачиваются в тот же каталог, где находится исполняемый файл. Вот разбивка кода: 
 Вот некоторые предложения по улучшению кода: 
 Вот альтернативное решение с использованием пула потоков для скачивания изображений в параллельном режиме: Тип TImageDownloader = class (TThread) private FSource: string; FDestFile: string; public constructor Create(Source: string; DestFile: string); procedure Execute; end; Процедура TForm1.Button1Click(Sender: TObject); var k, p: Integer; Source, dest, ext: string; begin for k := 0 to WebBrowser1.OleObject.Document.Images.Length - 1 do begin Source := WebBrowser1.OleObject.Document.Images.Item(k).Src; p := LastDelimiter('.', Source); ext := UpperCase(Copy(Source, p + 1, Length(Source))); if (ext = 'GIF') or (ext = 'JPG') then begin p := LastDelimiter('/', Source); dest := ExtractFilePath(ParamStr(0)) + Copy(Source, p + 1, Length(Source)); TImageDownloader.Create(Source, dest).Start; end; end; end; { TImageDownloader } constructor TImageDownloader.Create(Source: string; DestFile: string); begin FSource := Source; FDestFile := DestFile; end; procedure TImageDownloader.Execute; var DownloadHandle: Cardinal; begin DownloadHandle := UrlDownloadToFile(nil, PChar(FSource), PChar(FDestFile), 0, nil); if DownloadHandle <> 0 then RaiseException('Failed to download image'); end; ``` В этом альтернативном решении мы создаем пул потоков с помощью компонента IdThreadPool и присваиваем каждому заданию скачивания изображения отдельный поток. Это позволяет скачивать несколько изображений в параллельном режиме, что может значительно улучшить производительность для больших количеств файлов. Код на Delphi позволяет сохранять все картинки из веб-браузера TWebBrowser, используя функцию UrlDownloadToFile и перебора элементов документа. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш  
 | ||||
|  ©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||