Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi deprecated wird nicht als Warnung angezeigt (https://www.delphipraxis.net/148089-deprecated-wird-nicht-als-warnung-angezeigt.html)

Sergej_Molotov 22. Feb 2010 13:17


deprecated wird nicht als Warnung angezeigt
 
Hallo Zusammen,

ich wollte mal nachfragen, ob jemand von euch auch dieses Problem (Feature) des Compilers auch schon mal aufgefallen ist und wie man dies umgehen kann.

Folgendes Szenario:

Delphi-Quellcode:
...
implementation

uses
  Unit2;


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Unit2.bla; // hier zeigt der Compiler KEINE deprecated Warnung an
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  bla; // hier zeigt der Compiler eine deprecated Warnung an
end;
...
In der zweiten Unit Unit2 sieht die Prozedure bla wie folgt aus:

Delphi-Quellcode:
unit Unit2 deprecated;

interface

procedure bla; deprecated;

implementation

procedure bla;
begin
  // macht nix
end;

end.
Wenn ich nun die Sourcen compiliere, dann erscheint nur bei procedure TForm1.Button2Click(Sender: TObject); eine Warnung an.

Nun meine Frage:
Warum zeigt er diese Warnung nicht bei TForm1.Button1Click(Sender: TObject); an?

Hinweis: Ich benutze Delphi 2006

uligerhardt 22. Feb 2010 14:31

Re: deprecated wird nicht als Warnung angezeigt
 
Ist in D2007 auch so. Das würde ich prinzipiell auch als Bug ansehen, allerdings ist das schon ein Grenzfall. Wenn schon die ganze Unit2 deprecated ist, wieso deprezierst :) du zusätzlich noch eine Routine in selbiger Unit?

Sergej_Molotov 24. Feb 2010 07:19

Re: deprecated wird nicht als Warnung angezeigt
 
Dies sollte natürlich nur ein Beispiel sein. Ich hätte auch noch die Funktion hurz und blaeh :wink: erstellen können und diese dann als nicht deprecated markieren können.

Gruß

uligerhardt 24. Feb 2010 08:20

Re: deprecated wird nicht als Warnung angezeigt
 
Zitat:

Zitat von Sergej_Molotov
Dies sollte natürlich nur ein Beispiel sein. Ich hätte auch noch die Funktion hurz und blaeh :wink: erstellen können und diese dann als nicht deprecated markieren können.

Jo, aber da hurz oder blaeh in einer deprecated Unit wären, würde man trotzdem eine entsprechende Warnung kriegen, wenn man sie benutzen würde. Halt für das Usen der Unit und nicht für den Aufruf der Routinen.

Anders ausgedrückt: Für den Aufruf von bla in Button2Click aus deinem Ursprungspost kriegst du ja zwei Warnungen: eine, dass die enthaltende Unit deprecated ist, und eine, dass die Routine selbst deprecated ist.

Sergej_Molotov 25. Feb 2010 07:43

Re: deprecated wird nicht als Warnung angezeigt
 
Damit hast du natürlich recht.

Zitat:

[Pascal Warnung] Unit1.pas(27): W1006 Unit 'Unit2' ist veraltet
[Pascal Warnung] Unit1.pas(39): W1000 Symbol 'bla' ist veraltet
[Pascal Warnung] Project1.dpr(6): W1006 Unit 'Unit2' ist veraltet
Wir haben nur hier bei uns das Problem, dass die Unit normalerweise nicht veraltet ist, sondern nur einzelne Funktionen. Wenn man die Funktion mittel [Unit].[Funktionsname] aufruft, erscheint eben keine depreceted Meldung.

Zitat:

[Pascal Warnung] Unit1.pas(39): W1000 Symbol 'bla' ist veraltet
Wie gesagt, halte dies für eine sehr unschöne Sache in der BDS, dass solche Sachen vom Compiler nicht als Warnung angezeigt werden.

Wie sieht es denn bei neueren Version von Delphi aus? Hat da jemand schon Erfahrungen gemacht

HeikoAdams 25. Feb 2010 08:29

Re: deprecated wird nicht als Warnung angezeigt
 
Ich halte das eher für eine Inkonsequenz. Immerhin warnt der Compiler ja beim "normalen" Aufruf der Prozedur Bla, das diese veraltet ist. Warum dann also warnt er dann nicht auch, wenn die Prozedur Bla über
Delphi-Quellcode:
Unit2.Bla
aufgerufen wird? :gruebel:

Mach doch einfach dazu mal einen Eintrag der QC von Embra und schau, was die Jungs dort dazu sagen :wink:


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