Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi WebBrowser1.OleObject.Document.Images Problem. (https://www.delphipraxis.net/113209-webbrowser1-oleobject-document-images-problem.html)

Firewing 4. Mai 2008 17:26


WebBrowser1.OleObject.Document.Images Problem.
 
Ahoi und zwar lade ich automatisiert alle Bilder des Typs JPG einer HTML-Seite runter und zwar wiefolgt:


Delphi-Quellcode:
function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
  try
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0,
      nil) = 0;
  except
    Result := False;
  end;
end;
....

Delphi-Quellcode:
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 = 'JPG') then
    begin
      //ShowMessage('Found!');
      p := LastDelimiter('/', Source);
      dest := ExtractFilePath(ParamStr(0)) + Copy(Source, p + 1, Length(Source));
      DownloadFile(Source, dest);
    end;
  end;
end;
Dies funktioniert auch wunderbar, ich habe jedoch vor, auf meheren Seiten alle Bilder herunterzuladen er springt also nachdem er alle bilder gespeichert hat auf seite 2.

Wenn ich mich dann auf Seite2 befinde meldet er nen Fehler der in dieser Zeile stecken soll:

Delphi-Quellcode:
Source := WebBrowser1.OleObject.Document.Images.Item(k).Src;
Gibt es da etwas zu beachten? Ich leere die Variable auch bevor ich die Seite2 aufrufe...

toms 4. Mai 2008 18:14

Re: WebBrowser1.OleObject.Document.Images Problem.
 
Hallo, wurde die Seite beim Zugriff aufs Image Element schon fertig geladen?

Firewing 4. Mai 2008 20:28

Re: WebBrowser1.OleObject.Document.Images Problem.
 
Ja wurde sie...


Hier die Fehlermeldung:

Zugriffsverletzung bei Adresse 00463667 in Modul "Project1.exe". Lesen von Adresse 00000000

toms 4. Mai 2008 20:51

Re: WebBrowser1.OleObject.Document.Images Problem.
 
Tritt der Fehler auch auf, wenn du zuerst Seite 2 lädst?

marabu 4. Mai 2008 21:30

Re: WebBrowser1.OleObject.Document.Images Problem.
 
Hallo,

die in der Fehlermeldung ausgewiesene Adresse 0 signalisiert, dass einer der dereferenzierten Zeiger NIL gewesen ist. Heißer Kandidat ist WebBrowser1.OleObject.Document.

Es bleibt der Verdacht, dass der HTML-Parser noch nicht in den richtigen Zustand gewechselt hat.

Gute Nacht

Firewing 5. Mai 2008 17:08

Re: WebBrowser1.OleObject.Document.Images Problem.
 
Zitat:

Tritt der Fehler auch auf, wenn du zuerst Seite 2 lädst?
Nein. Allerdings, dann wenn ich die Seite 1 Aufrufe ;-)

Zitat:

Es bleibt der Verdacht, dass der HTML-Parser noch nicht in den richtigen Zustand gewechselt hat.
Habe das auch mal mit Buttons realisiert, sodass er alle Zeit der Welt haben sollte...Oder wie meinst du das? (Eventueller Code? ;-))

MfG

marabu 5. Mai 2008 18:08

Re: WebBrowser1.OleObject.Document.Images Problem.
 
Du kannst dich beim Ereignis OnDocumentComplete() benachrichtigen lassen.

Wie das geht, kannst du dir z.B. hier anschauen: klick

Firewing 5. Mai 2008 20:44

Re: WebBrowser1.OleObject.Document.Images Problem.
 
Achso, ja das ist klar, aber das geht ja damit nicht, deswegen habe ich die einzelnen Schritte ja auch durch Buttons nochmals gemacht, damit die Fehlerquelle "Zeit" wegfällt... hmm sehr merkartig :(

toms 5. Mai 2008 22:04

Re: WebBrowser1.OleObject.Document.Images Problem.
 
Zitat:

Zitat von Firewing
Achso, ja das ist klar, aber das geht ja damit nicht, deswegen habe ich die einzelnen Schritte ja auch durch Buttons nochmals gemacht, damit die Fehlerquelle "Zeit" wegfällt... hmm sehr merkartig :(

D.h wenn du per Button1 zur Seite 1 navigierst (Pause bis Dok. geladen), die Bilder durch Klick auf Button2 herunterlädst, per Button3 zur Seite 2 navigierst (Pause bis Dok. geladen), die Bilder durch Klick auf Button4 herunterlädst es nicht funktioniert?

Firewing 5. Mai 2008 22:45

Re: WebBrowser1.OleObject.Document.Images Problem.
 
exakt.

Gibts da noch nen "Trick" den man mal probieren könnte?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz