Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi W1025 Sprach-Feature wird nicht unterstützt: 'class constructor' (https://www.delphipraxis.net/185165-w1025-sprach-feature-wird-nicht-unterstuetzt-class-constructor.html)

himitsu 20. Mai 2015 08:01

Delphi-Version: XE7

W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Zitat:

[dcc32 Warnung] *.pas(1): W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
Eigentlich müsste ich diese Meldung doch mit
Delphi-Quellcode:
{$WARN UNSUPPORTED_CONSTRUCT OFF}
weg bekommen, aber sie bleit?
siehe [OH]{$WARN}[/OH] ganz unten, bei x1025

Ach ja, ich hab eigentlich nur einen
Delphi-Quellcode:
class destructor
, aber sollte ja egal sein.

Der schöne Günther 20. Mai 2015 09:12

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Ich verstehe nicht einmal bei was für Code man den W1025 überhaupt dazu bringen könnte über einen Klassenkonstruktor zu meckern.

himitsu 20. Mai 2015 09:46

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Der C++-Compiler kann das nicht und darum warnt der Delphi-Compiler auch davor. :roll:

Delphi-Quellcode:
type
  TMyClass = class(TComponent)
  private class var
    FMyList: TList<TIrgendwas>;
  public
    class destructor Destroy;
  end;

class destructor TMyClass.Destroy;
begin
  FreeAndNil(FMyList);
end;
Meine Liste wird in einem Class-Property erstellt und befüllt, wenn man dort was zuweist.

Uwe Raabe 20. Mai 2015 10:31

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Zitat:

Zitat von himitsu (Beitrag 1302254)
Der C++-Compiler kann das nicht und darum warnt der Delphi-Compiler auch davor. :roll:

Komisch - bei mir nicht!

Kannst du das mal auf ein minimales Beispiel runterbrechen?

baumina 20. Mai 2015 10:40

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Uwe, du bekommst die Meldung wahrscheinlich nicht, weil du unter Projekt / Optionen / Delphi-Compiler / Ausgabe C/C++ / Erzeugung der C/C++ Ausgabedatei auf "Nur DCUs erzeugen" stehen hast.

himitsu 20. Mai 2015 10:44

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Und aktuellere Delphis haben diese Option leider scheinbar standardmäßig aktiviert, in neuen Projekten, :wall:
oder vielleicht liegt's auch daran, daß es hier ein RAD Studio ist ... aber egal, die Meldung sollte sich ja eigentlich abschalten lassen.

ventiseis 20. Mai 2015 11:27

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Zitat:

Zitat von himitsu (Beitrag 1302254)
Delphi-Quellcode:
class destructor Destory;

Vielleicht mit class
Delphi-Quellcode:
Destroy
statt
Delphi-Quellcode:
Destory
?

himitsu 20. Mai 2015 12:09

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Ach, das war hier jetzt nur ein winziger Verschreiber. Im Programm ist es bestimmt richtig geschrieben. :angle:

DeddyH 20. Mai 2015 12:11

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Ich meine mal gelesen zu haben, dass es bei Klassenkonstruktoren und -destruktoren völlig schnurz ist, wie man sie benennt.

Uwe Raabe 20. Mai 2015 12:13

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Zitat:

Zitat von baumina (Beitrag 1302270)
Uwe, du bekommst die Meldung wahrscheinlich nicht, weil du unter Projekt / Optionen / Delphi-Compiler / Ausgabe C/C++ / Erzeugung der C/C++ Ausgabedatei auf "Nur DCUs erzeugen" stehen hast.

Das hatte ich schon mal probeweise aktiviert, aber trotzdem keine Warnung bekommen :gruebel:

himitsu 20. Mai 2015 12:23

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Normale Constructoren kann man auch nennen, wie man will ... nur beim Destructor wird halt nur das Destroy vom Free/Destroy aufgerufen. (außer man ruft den anders benannten Destructor selber auf)
Kann also gut sein, daß es bei Class-Constructoren auch egal ist, aber ich behalte das Namensschema lieber bei.


Es ist halt nur nervig, wenn sich "sinnlose" Meldungen im Compilerlog aufhalten ... räume da gern auf.
Und wenn ich was abschalte, dann nur geziehlt und nicht einfach nur
Delphi-Quellcode:
{$WARNINGS OFF}
, da ich "wichtige" Meldungen ja erhalten will.

baumina 20. Mai 2015 12:26

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1302297)
Zitat:

Zitat von baumina (Beitrag 1302270)
Uwe, du bekommst die Meldung wahrscheinlich nicht, weil du unter Projekt / Optionen / Delphi-Compiler / Ausgabe C/C++ / Erzeugung der C/C++ Ausgabedatei auf "Nur DCUs erzeugen" stehen hast.

Das hatte ich schon mal probeweise aktiviert, aber trotzdem keine Warnung bekommen :gruebel:

Ich bekomme den Warnhinweis mit Delphi XE, wenn ich das auf "C++ .objs, Header erzeugen" einstelle.

Dejan Vu 20. Mai 2015 12:28

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Eine andere Variante, um den Warnungsspam auszudünnen bestünde darin, auf Klassenkonstruktoren und -destruktoren sowie auf Klassenvariablen komplett zu verzichten.

Denn das sind Singletons. Und Singletons sind böse. Und so gar nicht threadsafe. Und stehen einem nur im Weg.

mael 12. Jul 2017 17:07

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Zitat:

Zitat von Dejan Vu (Beitrag 1302303)
Eine andere Variante, um den Warnungsspam auszudünnen bestünde darin, auf Klassenkonstruktoren und -destruktoren sowie auf Klassenvariablen komplett zu verzichten.

Denn das sind Singletons. Und Singletons sind böse. Und so gar nicht threadsafe. Und stehen einem nur im Weg.

Instanzen sind auch nicht unbedingt thread safe. Es kommt immer darauf an wie sich der Zugriff gestaltet. Singletons haben durchaus ihren Zweck.
Es gibt auch nur einen Eintrittspunkt/main()-Funktion pro Programm-Instanz, anderes würde wenig Sinn machen. Irgendwo braucht es einen Anfang.

mael 12. Jul 2017 17:14

AW: W1025 Sprach-Feature wird nicht unterstützt: 'class constructor'
 
Zitat:

Zitat von baumina (Beitrag 1302302)
Zitat:

Zitat von Uwe Raabe (Beitrag 1302297)
Zitat:

Zitat von baumina (Beitrag 1302270)
Uwe, du bekommst die Meldung wahrscheinlich nicht, weil du unter Projekt / Optionen / Delphi-Compiler / Ausgabe C/C++ / Erzeugung der C/C++ Ausgabedatei auf "Nur DCUs erzeugen" stehen hast.

Das hatte ich schon mal probeweise aktiviert, aber trotzdem keine Warnung bekommen :gruebel:

Ich bekomme den Warnhinweis mit Delphi XE, wenn ich das auf "C++ .objs, Header erzeugen" einstelle.

Ja, das war auch der Grund warum es bei mir passiert ist. Allerdings war es nicht im Package (Package A) das die Unit enthielt, sondern in einem anderen Package, das eine Abhängigkeit zu Package A hatte.


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