Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Problem mit FPC Define (https://www.delphipraxis.net/213961-problem-mit-fpc-define.html)

TurboMagic 29. Okt 2023 10:07

Problem mit FPC Define
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

es geht mal wieder um DEC.
Freundlicherweise hat mir jemand mittels Pull Request verbesserten FPC Support spendiert
(wer mag darf das testen sobald es im Entwicklungszweig ist, was aber gerade ein Problem ist...).
Dazu hat er auch in der Include Datei die diverse Einsterllungen Regelt Erweiterungen vorgenommen,
die jetzt aber dazu führen, dass es in Delphi nicht mehr compiliert :-(.

Ich verstehe nur nicht warum, denn seine Erweiterungen sind in einem {$IFDEF FPC} Block.
Warum kümmert sich der Delphi 11.3 Compiler überhaupt um den Inhalt dieses Blocks?
Will der plötzlich behaupten, er sei FPC kompatibel? :o

Im Anhang die Include Datei (iin .txt umbenannt, da .inc hier scheinbar nicht erlaubt).
Evtl. kann ja mal jemand einen Blick drauf werfen.
Um es nachzustellen sollte es reichen den Entwicklungszweig runterzuladen und die iclude
Datei in den Source Unterordner zu kopieren. Dann das Projekt aus dem Install Ordner mal ausführen,
die IDE neu starten und die Projektgruppe unter Source öffnen. Dort das DEC60 Projekt versuchen zu
compilieren.

=> wie bekomme ich das gefixt?

Grüße
TurboMagic

Stevie 29. Okt 2023 11:36

AW: Problem mit FPC Define
 
Wenn man schon legacyifend nutzt, dann muss das auch überall getan werden, einige stellen innerhalb des fehlerhaften Teils taten dies nicht (scheinbar kann FPC da auch inzwischen mit nem endif umgehen). Außerdem scheint es den Delphi Compiler hier ein bisschen aus den Socken zu hauen, dass man direkt FPC_FULLVERSION checkt, ein zusätzliches declared behebt das.

Ob das jetzt unter FPC kompiliert? Kein Plan, war nicht meine Aufgabe :mrgreen:

Delphi-Quellcode:
//------------------------------------------------------------------------------
// FPC v2.x support (Experimental)
//------------------------------------------------------------------------------

{$IFDEF FPC}
  {$UNDEF DELPHIORBCB}

  // fpc supports assembler
  //{$DEFINE PUREPASCAL}

  {$DEFINE NATIVEINT_UNDEFINED}


  {$IF declared(FPC_FULLVERSION) and (FPC_FULLVERSION >= 30300)}
       {$DEFINE HAVE_LAMBDAS}
  {$IFEND}

  // use compatibility mode
  {$MODE DELPHI}
  {$IFDEF HAVE_LAMBDAS}
          {$modeswitch functionreferences}
          {$modeswitch anonymousfunctions}
  {$ENDIF}

  {$DEFINE HAVE_ASSIGN_ARRAY}

  // defines for Mac OS X
  {$IFDEF DARWIN}
    {$DEFINE MACOS}
    {$DEFINE ALIGN_STACK}
  {$ENDIF}

  // define delphi-style CPU-width
  {$ifdef CPU64}
    {$define CPU64BITS}
  {$else} {$if defined(CPU32) }
    {$define CPU32BITS}
  {$ifend}{$endif}

  {$ASMMODE intel}

{$ELSE}
       // assume delphi have "reference to" feature
       {$define HAVE_LAMBDAS}
{$ENDIF FPC}

TurboMagic 29. Okt 2023 11:40

AW: Problem mit FPC Define
 
Hallo,

danke für diese Arbeiten. Schaue ich mir heute Nachmittag an.
Du hast getan, was du konntest. Um FPC Kompatibilität sollen sich andere kümmern.

Frage: ist das, was den Delphi Compiler aus den Socken hat einen Report Wert, sprich,
dass es mal geändert wird?

Grüße
TurboMagic

TurboMagic 29. Okt 2023 15:32

AW: Problem mit FPC Define
 
Hallo,

so, ich hab das jetzt alles gerade gezogen.
Bin jetzt nicht der IFEND usw. Eperte, habe aber rausgefunden dass sich das jetzt fast überall wo
der andere was beigetragen hat durchgezogen hat. Hab' es überall wieder auf ENDIF umgebaut wo es
den Compiler gestört hat. Es compiliert und läuft jetzt wieder unter Delphi.

=> so gerne ich es FPC kompoatibel halten will so wenig weiß ich von FPC und so wenig Zeit
hab' ich auch noch dafür. Es wäre echt toll, wenn jemand der FPC besser kennt sich die Sache mal
anschauen könnte und einen Vorschlag macht wie es so gerade zu ziehen ist, dass es beide Compiler
zufrieden stellt.

Grüße
TurboMagic

@Stevie: du stehst jetzt auch in der Notices.txt drin, zumindest mal im Development Zweig ;-)
Damit kann ich dir danke sagen. :-)

himitsu 29. Okt 2023 17:01

AW: Problem mit FPC Define
 
"Normal" war es eigentlich mal ganz "einfach" gedacht

{$IFDEF} hatte das {$ENDIF}
drum bekam {$IF} das {$IFEND}, damit mußte auch keine inaktive Verschachtelung aufgelöst werden.

{$IFDEF ConditionalExpression} ging ging einfach blind bis zum nächsten {$ENDIF} und die womöglich unbekannten {$IFEND} wurde ignoriert.

Stevie 29. Okt 2023 22:16

AW: Problem mit FPC Define
 
Eigentlich sind ja Pull Requests dafür da, dass man das erstmal durchtestet, bevor man sie merged und damit was kaputt macht. :wink:
Und dann hätte man die Verantwortlichkeit auch einfach an den PR Author delegieren können, bis es funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:08 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 by Thomas Breitkreuz