![]() |
Delphi-Version: XE7
Compiler warnt nicht vor nicht initialisiertem Rückgabewert wenn...
... es eine generische Methode ist.
Ich will nicht wissen wie viele solcher Stellen ich bereits überall im Code habe. Auf XE7, Win32 und Win64 gibt es keine Warnungen mit folgendem Code:
Delphi-Quellcode:
program Project22;
type {$DEFINE GENERIC} TSomeClass = class public function someFunc{$IFDEF GENERIC}<T>{$ENDIF}(): Boolean; end; function TSomeClass.someFunc{$IFDEF GENERIC}<T>{$ENDIF}(): Boolean; begin // Nope end; begin WriteLn( TSomeClass.Create().someFunc{$IFDEF GENERIC}<TObject>{$ENDIF}() ); end. Ich sehe ein dass manche Typen die T annehmen kann (String, Interface, ...) nicht uninitialisiert sein können. Aber selbst wenn ich den Typ auf ": class" einschränke kommt keine Warnung. Habe ich einen Denkfehler oder ist das eine weitere Delphi-Eigenheit™ ? // Edit: Ich merke grade, eigentlich warnt er in einer generischen Methode vor so ziemlich gar nichts. Also schon fast Blindflug. Delphi ist halt nur was für Profis. |
AW: Compiler warnt nicht vor nicht initialisiertem Rückgabewert wenn...
Vielleicht weiss Delphi selbst nichts damit anzufangen, so wie C++ und macht auch einen Blindflug. Frei nach dem Motto "Der wird schon wissen, was er macht". :stupid:
|
AW: Compiler warnt nicht vor nicht initialisiertem Rückgabewert wenn...
Einen QC-Eintrag gibt es dafür.
![]() Welche Warnungen unterbleiben denn noch? |
AW: Compiler warnt nicht vor nicht initialisiertem Rückgabewert wenn...
Viel schöner ist, dass unter bestimmten Umständen ein Fehler innerhalb einer generischen Klasse erst bei der Verwendung durch den Compiler gemeldet wird. Zum Beispiel ein Fehler, dass Typen inkompatibel sind. Die vom Compiler markierte Stelle war aber vollkommen korrekt...
|
AW: Compiler warnt nicht vor nicht initialisiertem Rückgabewert wenn...
Zitat:
Delphi-Quellcode:
...() : Boolean;
|
AW: Compiler warnt nicht vor nicht initialisiertem Rückgabewert wenn...
Wie findet ihr alle immer die QC/RSP-Einträge? Ich bin zu dumm dafür. :oops:
Zitat:
Zitat:
Delphi-Quellcode:
noch auf H2077 und W1036 geprüft. Wurden beide auch nicht angezeigt.
var
x: Integer; begin x:= x; |
AW: Compiler warnt nicht vor nicht initialisiertem Rückgabewert wenn...
Variablen und Results mit gemanageten Typen (Interface, Variant, dyn Array und String) werden sowieso nie so gewarnt, denn diese sind immer initialisiert.
Wäre aber zu praktisch, wenn der Compiler die automatische Initialisierung manchmal nicht mitzählen würde, denn speziell beim Result haben diese Typen ein klitzekleines Problem, wenn man die Funktion in 'ner Schleife aufruft. Und im NextGen zählen nur auch Objekte dazu. Aber bei Boolean kann man das schon als Fehler ansehn. |
AW: Compiler warnt nicht vor nicht initialisiertem Rückgabewert wenn...
Zum Glück gab es grade diesen Thread ... so war ich noch bissl aufmerksamer.
Hatte dadurch noch einen weiteren Fall entdeckt.
Delphi-Quellcode:
procedure Test;
var Value: Integer; procedure Inner; begin if Value = 0 then ; end; begin //Value := 0; // das hatte ich vergessen Inner; end; |
AW: Compiler warnt nicht vor nicht initialisiertem Rückgabewert wenn...
Zitat:
Ich kenne kein Argument, welches dafür spricht, einen nicht explizit angegebenen Rückgabewert zuzulassen. Außer vielleicht den, das man weniger zahlen muss, wenn man nach Programmzeilen abrechnet. |
AW: Compiler warnt nicht vor nicht initialisiertem Rückgabewert wenn...
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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