Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi {$ifend} <> {$endif} (https://www.delphipraxis.net/193495-%7B%24ifend%7D-%7B%24endif%7D.html)

EWeiss 6. Aug 2017 15:36


{$ifend} <> {$endif}
 
Welche unterschiede gibt es hier?

1. Wenn ich die Warnung ignorier was passiert in dem Fall.
2. Wenn ich anstelle dessen die Directive auf EndIf ändere was passiert in dem Fall.
Wenn ich die Directive ausschalte mit {$LEGACYIFEND ON} kann ich unter älteren Delphi Versionen den Code nicht mehr kompilieren.
Frage mich also was soll der ganze quatsch.

EDIT:
Warum wird im Thread Titel die Großschreibung geändert?
Von {$IFEND} <> {$ENDIF} zu {$ifend} <> {$endif} ?

gruss

Uwe Raabe 6. Aug 2017 16:28

AW: {$ifend} <> {$endif}
 
Dient lediglich der Vereinheitlichung. Es gibt keinen Grund, warum ein {$IFDEF} anders abgeschlossen werden soll als ein {$IF ...} - außer eben die Abwärtskompatibilität. Programmiert man nur für die neueren Versionen tut es eben immer ein {$ENDIF}.

Durch Setzen von {$LEGACYIFEND ON} kann man sicherstellen, daß der Code auch unter Delphi-Versionen vor XE4 compiliert.

EWeiss 6. Aug 2017 16:36

AW: {$ifend} <> {$endif}
 
Dann wäre es sinnvoller alle IFEND mit ENDIF zu ersetzen?
Oder macht es einen unterschied.
Zumindest könnte ich mir so {$LEGACYIFEND ON} errsparen und es kompiliert trotzdem noch mit älteren Versionen . Richtig?

das war die frage ;)

gruss

Uwe Raabe 6. Aug 2017 16:44

AW: {$ifend} <> {$endif}
 
Zitat:

Zitat von EWeiss (Beitrag 1378181)
Dann wäre es sinnvoller alle IFDEF mit ENDIF zu ersetzen?

Wenn du abwärtskompatibel sein willst, dann muss IFDEF mit ENDIF und IF mit IFEND abgeschlossen werden. Das LEGACYIFEND erzwingt es eben nur, damit man es nicht irgendwo übersieht.

himitsu 6. Aug 2017 16:57

AW: {$ifend} <> {$endif}
 
Es gab aber einen Grund dafür.

Früher konnte der Compiler nur IFDEF, aber kein IF. (vor Delphi 6, glaub ich)
Als Kompatibillität mit alten Compileren mußte es also unterschieden werden, damit man es verschachteln kann.

$IFDEF + $ENDIF
$IF + $IFEND

Kann der Compiler noch keine Conditional-Expressions, dann kann man sie vor ihm so verstecken.
Delphi-Quellcode:
{$IFDEF ConditionalExpressions}
  {$IF irgendwas <> 0}

  {$IFEND}
{$ENDIF}
Würde man da jetzt für Beides das Selbe ENDE verwenden, dann täte der alte Compiler das erste ENDE schon erkennen und beim Zweiten meckern "Ende ohne Anfang".

Mit XE3/XE4 wurde dann in Delphi vom Compiler Beides gleich behandelt, aber das Error-Insight abreitet aber noch paar Jahre "korrekt" und zeigte es als Falsch, wenn man nicht nach der alten Regel vorging.



WARUM: Wenn du im Titel oder im Text "alle" Buchstaben großschreibst, dann wird da ein LowerCase drüber gejagt, weil das Forum davorn ausgeht, daß du "schreist".

EWeiss 6. Aug 2017 17:36

AW: {$ifend} <> {$endif}
 
Ok danke..

Zitat:

WARUM: Wenn du im Titel oder im Text "alle" Buchstaben großschreibst, dann wird da ein LowerCase drüber gejagt, weil das Forum davorn ausgeht, daß du "schreist".
Gut.. Denke aber jedem sollte klar sein was ich meine ;)

gruss

jaenicke 6. Aug 2017 17:42

AW: {$ifend} <> {$endif}
 
Zitat:

Zitat von EWeiss (Beitrag 1378191)
Gut.. Denke aber jedem sollte klar was ich meine ;)

Ich schreibe die Direktiven ohnehin meistens klein, weil ich ja auch sonst nicht alles groß schreibe. ;-)

EWeiss 6. Aug 2017 17:45

AW: {$ifend} <> {$endif}
 
Zitat:

Zitat von jaenicke (Beitrag 1378193)
Zitat:

Zitat von EWeiss (Beitrag 1378191)
Gut.. Denke aber jedem sollte klar was ich meine ;)

Ich schreibe die Direktiven ohnehin meistens klein, weil ich ja auch sonst nicht alles groß schreibe. ;-)

Nun gut dann wird also nicht auf klein und groß Schreibung geachtet.
seit ich mit dem C++ Kram am hantieren bin dachte ich es wäre bei Direktiven in Delphi auch so.

Nun.. dann nicht. ;)

gruss

EWeiss 6. Aug 2017 19:10

AW: {$ifend} <> {$endif}
 
sorry ist nicht direkt das gleiche Thema

Was bedeuten die Ausrufezeichen bei Interface im Icon? (Structur Fenster)

gruss

jaenicke 7. Aug 2017 04:03

AW: {$ifend} <> {$endif}
 
Zitat:

Zitat von EWeiss (Beitrag 1378197)

Was bedeuten die Ausrufezeichen bei Interface im Icon? (Structur Fenster)

Dass es ein Interface ist. ;-)

Siehe hier:
http://docwiki.embarcadero.com/RADSt...Structure_View
In der Erklärung welche Möglichkeiten ist dort zur Anzeige gibt sieht das genauso aus. Außerdem sieht jedes Interface so aus. Das ist also vollkommen in Ordnung so.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 Uhr.
Seite 1 von 2  1 2      

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