Delphi-PRAXiS
Seite 5 von 9   « Erste     345 67     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Handling von Fehlern, Warnungen und Hints (https://www.delphipraxis.net/120816-handling-von-fehlern-warnungen-und-hints.html)

Dezipaitor 17. Sep 2008 15:00

Re: Handling von Fehlern, Warnungen und Hints
 
Globale Variablen werden schon immer mit 0 initialisiert.

Das ist ein dokumentiertes Verhalten und wird sicher nicht in Zukunft geändert.

SubData 17. Sep 2008 15:14

Re: Handling von Fehlern, Warnungen und Hints
 
"Result" ist aber keine globale Variable und um die geht es hier ;-)

MaBuSE 17. Sep 2008 15:23

Re: Handling von Fehlern, Warnungen und Hints
 
Zitat:

Zitat von Dezipaitor
Globale Variablen werden schon immer mit 0 initialisiert.

Stimmt, aber es wird trotzdem eine Warnung ausgegeben.

in der Delphi Hilfe steht:
Wenn Sie eine globale Variable nicht explizit initialisieren, wird sie vom Compiler zunächst auf 0 gesetzt. Lokale Variablen können bei der Deklaration nicht initialisiert werden. Sie sind nicht definiert, solange ihnen kein Wert zugewiesen wird.


bei Funktionen gilt aber folgendes:
in der Delphi Hilfe steht:
Wenn die Ausführung einer Funktion beendet wird, bevor Result oder dem Funktionsnamen ein Wert zugewiesen wurde, ist der Rückgabewert der Funktion nicht definiert.


Nach dieser Definition ist die Warnung OK.

Das der Rückgabewert auch nur eine Variable ist, das steht auf einem anderen Blatt. ;-)

Dezipaitor 17. Sep 2008 15:32

Re: Handling von Fehlern, Warnungen und Hints
 
Zitat:

"Result" ist aber keine globale Variable und um die geht es hier
Nein, es ging nicht um Result, sondern um den Pointer. Zumindest habe ich das so verstanden:
Zitat:

Man (Du) geh(s)t davon aus, dass der Pointer immer mit nil vordefiniert ist.
Also geht es um "_AddSecurityPackageW: Pointer;". Und dieser ist immer mit nil vorbelegt.


Result steckt in dem AX Register, welches von der Funktion, angesprungen durch JMP, gesetzt wird. Somit ist der Rückgabewert definiert. Aber das kann Delphi natürlich nicht erkennen. Daher ist die Warnung semantisch falsch.

Chemiker 17. Sep 2008 17:55

Re: Handling von Fehlern, Warnungen und Hints
 
Hallo,

ich habe zwar in meinen normalen Programmen auch keine Warnungen, aber wenn jemand eine Idee hat wie man die Fehler abstellen kann die unter Struktur angezeigt werden.

In einigen Programmen arbeite ich mit OLE-Automation späte Bindung.

z.B. :

Delphi-Quellcode:
OleInstanc.ActiveWorkbook.Close (saveChanges:=True, FileName:=strName);
Dann werden unter Struktur 2 Fehler angezeigt:

Nicht deklarierter Bezeichner ‚saveChanges’ in Zeile 3040
Nicht deklarierter Bezeichner ‚FileName’ in Zeile 3040

Die kann weder mit HINT noch mit WARNINGS abstellen.


Bis bald Chemiker

Dezipaitor 17. Sep 2008 18:59

Re: Handling von Fehlern, Warnungen und Hints
 
Ich glaube, wenn du ein neues Thema aufmachst mit deine Frage, dann können dir sicher mehr Leute helfen.

Chemiker 17. Sep 2008 19:25

Re: Handling von Fehlern, Warnungen und Hints
 
Hallo Dezipaitor,

Zitat:

Zitat von Dezipaitor
Ich glaube, wenn du ein neues Thema aufmachst mit deine Frage, dann können dir sicher mehr Leute helfen.

Das war jetzt nicht eine konkrete Frage. Sondern der Beitrag war nur als Hinweis, weil die Meinung vertreten wird, dass man alle Warnungen und Fehler ausstellen kann.

Bis bald Chemiker

Dezipaitor 17. Sep 2008 19:36

Re: Handling von Fehlern, Warnungen und Hints
 
Ah ok. Da hab ich die lange Tradition von Missverständnissen nur vortgeführt :mrgreen:

MaBuSE 18. Sep 2008 08:27

Re: Handling von Fehlern, Warnungen und Hints
 
Zitat:

Zitat von Chemiker
Das war jetzt nicht eine konkrete Frage. Sondern der Beitrag war nur als Hinweis, weil die Meinung vertreten wird, dass man alle Warnungen und Fehler ausstellen kann.

Was Du beschreibst ist aber was völlig anderes. Wir reden hier von den "echten" Compiler Warnungen und Hinweisen. Also das was der Compiler ausgibt. Du spricht von ErrorInsight, also dem was die IDE beim Parsen des Codes für Anstößig hällt.

Wenn der Compiler einen Fehler ausgibt, dann kann das Projekt nicht erstellt werden.

Denn ErrorInsight einen Fehler ausgibt und der Compiler trotzdem kompilieren kann, dann liegt ErrorInsight falsch. :stupid:
Das wäre dann einen Eintrag in dem BugTracking Tool von CodeGear wert. ( http://qc.codegear.com )

und hat mit den hier beschriebenen Problem eigentlich nichts zu tun.

ps: Das soll übrigens nicht als Beschwerde, sondern als Erklärung verstanden werden. Ich freue mich über jeden konstruktiven Beitrag im Forum, und dazu zählt er auf jeden Fall.

HeikoAdams 18. Sep 2008 09:26

Re: Handling von Fehlern, Warnungen und Hints
 
Zitat:

Zitat von Dezipaitor
"Rückgabewert der Funktion AddSecurityPackageW könnte undefiniert sein" - Das ist hier falsch.
Hier ein "result := " einzufügen wäre wahnsinnig, da man ein paar tausend Funktionen anpassen müsste.

Das bedeutet im Umkehrschluss, das Du vom Compiler erwartest, das er bei Funktionen nicht nur nach "Result :=" oder "Funktionsname :=" suchen soll, sondern auch noch eventuell vorhandenen ASM-Code parsen soll, ob eventuell dort das entsprechende Register bestückt wird?

Sorry, aber wer zu faul ist, "Result :=" oder "Funktionsname :=" in seine Funktion zu schreiben, der hat nichts anderes als die entsprechende Warnung verdient. :evil:

Ebenso gefährlich finde ich, das es überhaupt die Möglichkeit gibt, Warnungen für ein gesamtes Projekt zu deaktivieren. Nur weil die Warnungen im Moment unbegründet sind, darf man als verantwortungsvoller Entwickler nicht davon ausgehen, dass das auch zukünftig der Fall ist!

Zitat:

Zitat von Dezipaitor
Globale Variablen werden schon immer mit 0 initialisiert.
Das ist ein dokumentiertes Verhalten und wird sicher nicht in Zukunft geändert.

Dazu sage ich nur: Verlass Dich auf andere und Du bist verlassen.
Wer sagt Dir, das es nicht zukünftig einen (ge)wichtigen Grund für CodeGear gibt, das beschriebene Verhalten doch zu verändern?

Mein Informatik-Lehrer hat uns förmlich eingeprügelt, anstellen von
Delphi-Quellcode:
if a <= b then
nur
Delphi-Quellcode:
if (a <= b) then
zu schreiben, da man nie sicher sein kann, das sich das Verhalten des Compilers in diesem Punkt nicht doch irgendwann ändert.
Sein Credo war damals: Im Leben ist nur eins sicher: Der Tod.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 Uhr.
Seite 5 von 9   « Erste     345 67     Letzte »    

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