AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Fehlerbehandlung bei dll

Ein Thema von nezumi7 · begonnen am 31. Jul 2021 · letzter Beitrag vom 6. Aug 2021
Antwort Antwort
nezumi7

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

AW: Fehlerbehandlung bei dll

  Alt 31. Jul 2021, 13:17
@Sebastian
Das ist ja sehr interessant, dass das bei Dir funktioniert! Du sprichst von einem try/except: Hast Du den Aufruf im Host nochmal in ein try except gepackt?

Sehr dankbar bin ich Dir für den Hinweis auf das aktuelle Indy. Ich hatte da gar nicht mehr nachgesehen, weil ich vor einiger Zeit schon mal gelesen hatte, dass Indy nur bis zur Version 10.2 oder sowas mit D6 kompatibel ist. scheinbar unterstützt diese Version aber nur die Protokolle TLS 1.0 und 1.1, die aber von der gewünschten Internetseite nicht mehr akzeptiert werden. Ich hatte daher immer eine "reset by peer" Fehlermeldung bekommen. Ich werds jetzt aber gleich nochmal mit dem aktuellen Indy probieren, das ist mir eh lieber als das Rumgefrickel mit dlls.

@Günther
Ich habe im gesamten restlichen Code kein try/except, weil da eigentlich nichts mehr schief gehen kann. Das einzige try (/ finally) hatte ich oben schon gepostet. Ist Deine Anmerkung so zu verstehen, dass ich besser mit einem try/except (anstelle try/finally) arbeiten sollte, damit die Exception die dll nicht verlässt? (In diese Richtung scheint mir auch der Hinweis von himitsu zu gehen, wobei die Ausführungen für mich aber starker Tobak sind und weit über meinen Hobby-Programmier-Horizont hinausgehen....).
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.234 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Fehlerbehandlung bei dll

  Alt 31. Jul 2021, 13:56
Und wie wäre es das Hauptprogramm auf aktuelle Delphi-Version zu bringen.
Wir waren lange selbst auf D6.
Die Produktivitätssprung mit aktuellen Delphi ist gegenüber D6 gewaltig.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.069 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fehlerbehandlung bei dll

  Alt 5. Aug 2021, 13:31
Du sprichst von einem try/except: Hast Du den Aufruf im Host nochmal in ein try except gepackt?
Ich habe beides ausprobiert. Egal ob ein der DLL oder der Hostanwendung funktioniert das try..except normal wie erwartet.

Ich habe im gesamten restlichen Code kein try/except, weil da eigentlich nichts mehr schief gehen kann. Das einzige try (/ finally) hatte ich oben schon gepostet.
Nun ja, wenn du den Fehler gar nicht abfängst, weil du kein try..except drin hast, wird er auch nicht abgefangen...
try..finally reicht die Exception ja weiter, denn es sorgt ja nur dafür, dass der Code im finally trotz eines Fehlers ausgeführt wird. Es fängt die Exception aber nicht ab.
Wenn du das dann an der falschen Stelle aufrufst, mag es auch Folgeprobleme geben.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
657 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Fehlerbehandlung bei dll

  Alt 6. Aug 2021, 18:00
@Sebastian
Das ist ja sehr interessant, dass das bei Dir funktioniert! Du sprichst von einem try/except: Hast Du den Aufruf im Host nochmal in ein try except gepackt?

Sehr dankbar bin ich Dir für den Hinweis auf das aktuelle Indy. Ich hatte da gar nicht mehr nachgesehen, weil ich vor einiger Zeit schon mal gelesen hatte, dass Indy nur bis zur Version 10.2 oder sowas mit D6 kompatibel ist. scheinbar unterstützt diese Version aber nur die Protokolle TLS 1.0 und 1.1, die aber von der gewünschten Internetseite nicht mehr akzeptiert werden. Ich hatte daher immer eine "reset by peer" Fehlermeldung bekommen. Ich werds jetzt aber gleich nochmal mit dem aktuellen Indy probieren, das ist mir eh lieber als das Rumgefrickel mit dlls.

@Günther
Ich habe im gesamten restlichen Code kein try/except, weil da eigentlich nichts mehr schief gehen kann. Das einzige try (/ finally) hatte ich oben schon gepostet. Ist Deine Anmerkung so zu verstehen, dass ich besser mit einem try/except (anstelle try/finally) arbeiten sollte, damit die Exception die dll nicht verlässt? (In diese Richtung scheint mir auch der Hinweis von himitsu zu gehen, wobei die Ausführungen für mich aber starker Tobak sind und weit über meinen Hobby-Programmier-Horizont hinausgehen....).
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
    try
      HttpResponse := HttpClient.Get(url);
    except
      // hier irgendwas machen, was du willst z.B. je anch Exeption etwas anderes (Siehe Hilfe zu try except).
      vtext := '';
    end;
    if vtext <> 'then
      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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.069 Beiträge
 
Delphi 12 Athens
 
#5

AW: Fehlerbehandlung bei dll

  Alt 6. Aug 2021, 19:55
Wie soll denn dort vtext etwas anderes als einen Leerstring bekommen?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.580 Beiträge
 
Delphi 12 Athens
 
#6

AW: Fehlerbehandlung bei dll

  Alt 6. Aug 2021, 21:10
Noch besser, wenn es knallt, dann richtig, da HttpResponse nicht initialisiert wurde, wenn .GET abgeraucht ist.
Aber zum Glück überspringt das IF nach dem EXCEPT-END den Code, damit es nicht knallen kann.

Meckert denn der Complier hier nicht über eine "nicht initialisierte Variable" ?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 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