Thema: Delphi Fehlerbehandlung bei dll

Einzelnen Beitrag anzeigen

nezumi7

Registriert seit: 11. Apr 2011
67 Beiträge
 
#1

Fehlerbehandlung bei dll

  Alt 31. Jul 2021, 06:21
Liebe Profis,

ich habe vor Jahren einmal in Delphi6 ein Programm geschrieben, das mir meine Kontobuchungen ordnet (schlichtes Auswerten von Textdateien). Dabei war vorgesehen, dass in ein paar wenigen Fällen ein Wechselkurs aus dem Internet abgerufen wird.

Mittlerweile funktioniert letzteres nicht mehr, weil es kaum noch ungesicherte Internetseiten gibt und Delphi6 und https nicht geht oder zumindest recht mühsam ist.

Ich habe daher den Internetaufruf in einer brandaktuellen Delphi-Version geschrieben und in eine dll gepackt, die dann von meinem Delphi6-Programm verwendet wird:

dll:
Delphi-Quellcode:
library internet;

uses
  System.SysUtils,
  System.Classes,
  System.Net.URLClient,
  System.Net.HttpClient,
  System.Net.HttpClientComponent;

{$R *.res}

function get_course(url: ShortString): shortstring; stdcall;
var
  HttpClient: THttpClient;
  HttpResponse: IHttpResponse;
 begin
Result := '';

HttpClient := THTTPClient.Create;
  try
    HttpResponse := HttpClient.Get(url);
    vtext := HttpResponse.ContentAsString();
  finally
    HttpClient.Free;
  end;

{es folgt eine längere Auswertung des Seitenquelltextes, der Kurs wird dann ins Result geschrieben. Hier liegt nicht das Problem}  
  end;

exports
  get_course;
begin
end.

Host:
Delphi-Quellcode:
implementation

{$R *.dfm}

function get_course(url: ShortString): Shortstring; stdcall; external 'internet.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin

Edit2.Text := get_course(Edit1.text);

end;
Klappt alles wunderbar, das Problem ist nur: wenn die Internetverbindung unterbrochen ist, geht gar nichts mehr, das ganze Programm hängt sich total auf, trotz try/ error beim Aufruf.

Für mich ist dll völlig neu, offenbar gelten hier andere Regeln beim Fehlerhandling. Hat jemand eine Idee, wie man das machen kann? (Quick and dirty würde vollkommen reichen. Ich brauche keine Fehlermeldung, es reicht, wenn die Funktion bei einem Fehler einfach gar nichts zurück gibt. Wichtig ist mir nur, dass sich bei Problemen mit der Internetverbindung nicht alles aufhängt.....
  Mit Zitat antworten Zitat