Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TDownloadURL Fehler abfangen? (https://www.delphipraxis.net/143664-tdownloadurl-fehler-abfangen.html)

Hedge 20. Nov 2009 15:30


TDownloadURL Fehler abfangen?
 
Ich benutze TDownloadURL um eine Datei herunterzuladen was auch ziemlich gut funktioniert.

Leider werden Fehler (zB. falsche URL) sofort ausgegeben anstatt eine Exception zu werfen.

Kann ich trotzdem irgendwie die Fehlermeldungen auffangen und selbst damit weiterarbeiten?

Die entsprechende Codestelle in der Unit ExtActns sieht so aus:

Delphi-Quellcode:
  if Assigned(UrlMonDownloadToFile) then
  begin
    if URLMonDownloadToFile(nil, PChar(URL), PChar(FileName), 0, Self as IBindStatusCallBack) <> S_OK then
      raise Exception.CreateResFmt(@SErrorDownloadingURL, [URL]);
  end else
    raise Exception.CreateResFmt(@SUrlMonDllMissing, [UrlMonLib]);

uoeb7gp 20. Nov 2009 16:05

Re: TDownloadURL Fehler abfangen?
 
Hallo, ich gehe mal von der naiven Annahme aus, dass sich dies durch


Delphi-Quellcode:
try
  URLMonDownloadToFile(.....);
except
  ....
end;
abfangen lässt.

Sollte das OS eine Exception werfen, dann mit

Delphi-Quellcode:
function URLMonDownloadToFileEx(...): ...;
var
  OldMode: UINT;
  FPUControlWord: Word;
begin
  OldMode := SetErrorMode(ErrorMode);
  try
    asm
      FNSTCW FPUControlWord
    end;
    try
      result := URLMonDownloadToFile(.....);
    finally
      asm
        FNCLEX
        FLDCW FPUControlWord
      end;
    end;
  finally
    SetErrorMode(OldMode);
  end;
end;
versuchen.

Luckie 20. Nov 2009 20:45

Re: TDownloadURL Fehler abfangen?
 
Zitat:

Zitat von Hedge
Leider werden Fehler (zB. falsche URL) sofort ausgegeben anstatt eine Exception zu werfen.

Wie behandelst du denn die Exception? :roll:

Hedge 21. Nov 2009 13:23

Re: TDownloadURL Fehler abfangen?
 
Das Problem ist dass überhaupt keine Exceptions geworfen werden.

Ich wollte mir erstmal ansehen was so für Exceptions auftreten können:

Delphi-Quellcode:
var
  RemotePath: String;
  Download:TDownloadURL;
begin
  downloadfilename:=fileName;
  RemotePath:='http://localhost/download/';
  Download:=TDownloadURL.Create(self);
  Download.URL:=RemotePath+filename;
  Download.Filename:=ExtractFilePath(Application.ExeName)+fileName;
  Download.OnDownloadProgress:=URL_OnDownloadProgress;
  try
    Download.ExecuteTarget(nil);
  except
    on E:Exception do
     ShowMessage(E.Message);
  end;
Leider kommt es nie zu einer Exception.

uoeb7gp 21. Nov 2009 21:24

Re: TDownloadURL Fehler abfangen?
 
Hallo Hedge, hab den Demosource bei mit ausprobiert.
Das Teil schmeisst die schönsten Exceptions.
Diese werden auch korrekt behandelt.
Habs mit D7 getestet, funkt tadellos, ohne Probleme.
Womöglich D2009 Problem??

lg.

Hedge 22. Nov 2009 10:42

Re: TDownloadURL Fehler abfangen?
 
Danke fürs Ausprobieren.

Nen D2009-Problem kann ich nicht ausschließen, aber was kann man da machen?

Luckie 22. Nov 2009 10:52

Re: TDownloadURL Fehler abfangen?
 
Warten bis jemand das mit D2009 bestätigt hat. ;)

Hedge 23. Nov 2009 13:44

Re: TDownloadURL Fehler abfangen?
 
Kann mir Jemand bei dem es funktioniert vielleicht mal seine ExtActns.pas schicken damit ich mit Meiner vergleichen kann?

Nach wie vor erscheinen bei mir im Fehlerfall lediglich Message-Boxen die Auskunft über diesen geben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:50 Uhr.

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