Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fehler in der Fehlerbehandlung (https://www.delphipraxis.net/205581-fehler-der-fehlerbehandlung.html)

himitsu 25. Sep 2020 19:13

Fehler in der Fehlerbehandlung
 
sind eines der schlimmsten Dinge, die extremst nerven können.

Seit Tagen suche ich in unserem Code, in Fremdkomponenten und im FinalBuilder Fehler, bei der Umstellung auf 10.4.

Und am Ende stellt sich raus, dass der Fehler im Eurekalog steckt und diese Typen grob fahrlässig sämtliche Compilerwarnungen ignoriert haben.
Fast alles lässt sich nun auf eine nicht-initialisierte Variable zurückführen.
Delphi-Quellcode:
function InternalExecute: Integer;
begin
  ...
  WriteLine(GetStr(rsELCompiling));
  ExitCode := ExecWait(Compiler, Params); //***** call DCC32
  if ExitCode = 0 then
  begin
    ...
  end
  else
    WriteError(Format(GetStr(rsELCompileErrorCodeFmt), [ExitCode]));
  Result := ExitCode;
  ...
end;

function Execute: Integer;
  function ProtectedExecute: Integer;
  begin
    ...
    InternalExecute; //***** the result is lost :(
    ...
  end;
begin
  ...
  Result := ProtectedExecute;
  ...
end;
Mit dem Ergebnis, dass bei einem Kollegen schonmal im Log alles OK war, aber der Build dennoch abgebrochen war
und bei mir genau andersrum, also alles war angeblich "OK", aber eigentlich gab es noch viele Fehler.
DCC32 oder ECC32 zeigen einen Fehler oder OK, aber dem FinalBuilder und jedem Anderen, der auf den ExitCode/ErrorLevel des ECC hört, wird eventuell (zufällig) was komplett Anderes gesagt.


Auch sind deren Parserfunktionen etwas "speziell".
Gut, dass Eurekalog von
Delphi-Quellcode:
{$LIBSUFFIX AUTO}
noch nichts gehört hat und es deswegen noch fehlt, kann man verstehen,
aber als ich es für uns erstmal implementiert hab und dabei deren Code sah .... da darf in der DPR kein Leerzeichen zuviel/zuwenig sein, in IFDEF oder Auskommentiert darf sowas auch nicht vorkommen und in eine INC verschoben sowieso nicht ... witzig nur, dass man gerade Sowas in vielen Fremdkomponenten regelmäßig findet, und ganz bestimmt auch in Quellcodes vieler Projekte.



Auch im Debugger können Eurekalog, Madexcept und Co. richtig viel Spaß bereiten, wenn man in deren Hooks landet und nicht mehr raus kommt.


Von abgefangene Fehlern, die wortlos verworfen oder durch nutzlose Fehlertexte ersetze werden,
bzw. wo Fehler neu ausgelöst und dabei die ursprüngliche Fehlermeldung/-position verloren gehen, will man lieber nicht reden. :kotz:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:21 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