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.....