Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

AW: HttpClient wirft Fehler 12019 wenn zweitesmal aufgerufen

  Alt 11. Jan 2024, 17:21
Warum hörst du nicht auf die Warnungen des Compilers?
Delphi-Quellcode:
        try
          Netclient_Checker := TNetHTTPClient.Create(self);
          ...
        finally
          Checkup_ready := TRUE;
          Netclient_Checker.Free; //Ebenfalls mit FreeAndNil versucht weil ich ein unsauberes Schließen im Verdacht hatt
        end;
Hier sollte er meckern, dass diese Variable nicht initialisiert sei, was so auch richtig ist, denn wenn es im Create knallt, dann bekommt Free eine "zufällige" Variable.

Also ja, dein Verdacht könnte schon stimmen, nur ist das Free/FreeAndNil nicht der Fehler, sondern alles davor.
Selbst wenn es erst im Free und nicht schon im Create knallt, dann nur, weil vorher schon etwas falsch war.

Das Create gehört vor das Try. (oder notfalls muß es vorher zumindestens initialisiert werden)

Delphi-Quellcode:
obj := TIrgendwas.Create;
try
  ...
finally
  obj.Free;
end;
Delphi-Quellcode:
obj := nil;
try
  ...
  obj := TIrgendwas.Create;
  ...
finally
  obj.Free; // im Free ist ein if-Assigned integriert
end;

Und dann greifst du auch noch multithreaded auf die nicht-threadsafe VCL zu.

Das Self gehört hier niemals in einen Thread.
Create des TComponent registriert sich bei seinem Owner (schreibt dort also aus einem Thread in eine Komponenten-Liste) und beim Free nochmal, um sich aus dieser Liste zu löschen.
-> Netclient_Checker := TNetHTTPClient.Create(nil);
Und solche Try-Except, mit "schwachsinniger" Fehlerbehandlung, gehören verboten.
Warum wird die eigentliche Exception.Message grob fahrlässig vernichtet?
Zitat:
Response_msg := Translate('IP nicht erreichbar');
Was wäre, wenn die IP erreichbar ist, aber es einen anderen Fehler gab?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (11. Jan 2024 um 17:30 Uhr)
  Mit Zitat antworten Zitat