AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Delphi und FPC compiler problem
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi und FPC compiler problem

Ein Thema von KodeZwerg · begonnen am 15. Aug 2022 · letzter Beitrag vom 15. Aug 2022
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#11

AW: Delphi und FPC compiler problem

  Alt 15. Aug 2022, 14:42
Für mich schaut das nicht wirklich nach einem Bug aus, sondern ist vermutlich "As Designed".
Ich habe das mal in einen internen Channel gepostet. Mal abwarten wie die Reaktionen da ausfallen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Delphi und FPC compiler problem

  Alt 15. Aug 2022, 14:48
Das ist ein reines Compilier/Parser Problem und nicht ein Compilat Problem. Allfälliger Code innerhalb des IFDEF FPC wird ncht in das Programm compiliert. Das ist alles richtig und macht er auch so. Mit meinem obigen Lösungsansatz kannst du nach dem IFDEF FPC Müll reinschreiben und alles compiliert wie es sollte. Der Müll wird wie erwartet ignoriert.

Der Compiler wertet aber alle {$...} Zeilen aus, auch solche die er garnicht müsste. Da dort nun aber eine Referenz auf eine Konstante gemacht wird (FPC_VERSION >= 3) weiss der Delphi Compiler nicht was er damit anfangen soll, da er kein FPC_VERSION kennt. Ob da nun Defined oder Declared steht, hat für diesen Fehler keinen Einfluss, da dieser Teil eh nicht ins Compilat kommt.

@Uwe Raabe
Hab es eben mit D7 getestet und auch da kommt der Fehler aus gleichen Gründen. Wenn man da im IF einen Vergleich macht muss die entsprechende Konstante vorhanden sein, sonst knallt es.

Wie gesagt ist das ein reines Parser Problem und der Compiler macht da alles wie er muss, achtet also nicht auf das Zeugs innerhlab der IFDEF FPC beim compilieren. Für mich schaut das nicht wirklich nach einem Bug aus, sondern ist vermutlich "As Designed".
Ich vermute es ist so wie Du sagst, wenn es in mehr als zwei Zeilen kommt, ignoriert der Parser das vorige statement und sammelt daten die er vermutlich nicht brauchen wird aber denn nach Korrektheit auswertet.
Dank für diesen Beitrag!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#13

AW: Delphi und FPC compiler problem

  Alt 15. Aug 2022, 15:02
Für mich schaut das nicht wirklich nach einem Bug aus, sondern ist vermutlich "As Designed".
Ein Bug ist es ja dennoch.
Man macht ja extra ein IF/IFDEF drumrum, damit der Teil darin nicht beachtet wird, wenn man schon weiß, dass es das nicht gibt.

Wenn der Compiler/Parser nun dennoch da rein sieht, dann ist es sein Problem.

Wenn er es sich dennoch ansehen will/muß, und er von einem vorherrigen IF/IFDEF bereits weiß, dass der Teil garnicht benutzt wird, dann sollte er zumindestens die "Prüfbedingungung" bis zum abschließenden } ignorieren.



Ich vermute es geht darauf hinaus, seitdem Delphi IFEND und ENDIF als "gleich" betrachtet, bzw. krankhaft zwanghaft versucht ALLES auf Eines umzubiegen,
und seitdem auch die Dinge drinen parsen muß, um das "richtige" Ende zu finden.

Früher war es einfach, alles vom IFDEF bis zum "nächsten" ENDIF oder ELSE und IF/IFEND wurde ignoriert.
Ging ja ursprünglich auch nicht anders, weil damals die "alten" Compiler $IF noch garnicht kannten.
Delphi-Quellcode:
{$IFDEF ConditionalDefines}
  {$IF ...}

  {$IFEND}
{$ENDIF}
$2B or not $2B

Geändert von himitsu (15. Aug 2022 um 15:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#14

AW: Delphi und FPC compiler problem

  Alt 15. Aug 2022, 15:16
Die erste Reaktion war diese Schreibweise, die ja auch schon von Frank in die Runde geworfen wurde:
Delphi-Quellcode:
{$IFDEF FPC}
  {$IF Declared(FPC_VERSION) and (FPC_VERSION >= 3)}
    {$DEFINE UNICODE}
  {$IFEND}
{$ENDIF FPC}
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
650 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Delphi und FPC compiler problem

  Alt 15. Aug 2022, 15:39
Ich vermute es geht darauf hinaus, seitdem Delphi IFEND und ENDIF als "gleich" betrachtet, bzw. krankhaft zwanghaft versucht ALLES auf Eines umzubiegen,
und seitdem auch die Dinge drinen parsen muß, um das "richtige" Ende zu finden.
Das Problem besteht seit Anfang an, seit es die IF Anweisung gibt, die Defines und Konstanten auswerten kann. Wie ich bereits gschrieben habe, geht das auch in D7 nicht und verhält sich da genau geleich. Mit deiner erwähnten Änderung hat das wohl nichts zu tun.

@Uwe Raabe
Ok das finde ich dann sogar eine elegante Lösung für das Problem.

Geändert von Rolf Frei (15. Aug 2022 um 15:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Delphi und FPC compiler problem

  Alt 15. Aug 2022, 19:44
Mach doch bitte einen BugReport dazu auf.
Conditional Compiling dont work as expect - erledigt, hoffe alles korrekt gemacht zu haben.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

AW: Delphi und FPC compiler problem

  Alt 15. Aug 2022, 21:14
Witzig, eigentlich nutzte ich gern AND und OR, weil dutzendfach verschachteltete IFDEFs nicht grade schön anzusehen sind und man oft genug garnicht mehr erkennt, was wann wo ist.

z.B. viele mehrfach verschachtelte Dinge aus den INCs von Indy, JEDI und Co., lassen sich oftmals durch wenige IF+ELSEIF ersetzen.


Und jetzt ist es plötzlich die Lösung für etwas, was mir so bisher noch garnicht aufgefallen war.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Delphi und FPC compiler problem

  Alt 15. Aug 2022, 23:28
Ich vermute es geht darauf hinaus, seitdem Delphi IFEND und ENDIF als "gleich" betrachtet, bzw. krankhaft zwanghaft versucht ALLES auf Eines umzubiegen,
und seitdem auch die Dinge drinen parsen muß, um das "richtige" Ende zu finden.

Früher war es einfach, alles vom IFDEF bis zum "nächsten" ENDIF oder ELSE und IF/IFEND wurde ignoriert.
Ging ja ursprünglich auch nicht anders, weil damals die "alten" Compiler $IF noch garnicht kannten.
Delphi-Quellcode:
{$IFDEF ConditionalDefines}
  {$IF ...}

  {$IFEND}
{$ENDIF}
{$LEGACYIFEND ON} ändert leider nichts.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:58 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