Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   IFDEF Win32 verschwindet (https://www.delphipraxis.net/211172-ifdef-win32-verschwindet.html)

charly52 8. Aug 2022 10:10

IFDEF Win32 verschwindet
 
Hi all,

Bisher hatte ich nur in der 32Bit Umgebung zu tun.
Jetzt brauche ich für eine ISAP-Dll jetzt die Win64 Plattform. Dazu habe ich alte Sourcen wie folgt modifiziert.


Delphi-Quellcode:
 requires
  rtl,
  dbrtl,
  vcldb,
  BasisUnits270,
{$IFDEF Win32}                    <--------------------  neu
  designide,
{$ENDIF Win32}                    <--------------------  neu
  TxTextControlPack;

contains
  Just1_32Run in '..\..\JUSTONE\Just1_32Run.pas',
{$IFDEF Win32}                              <--------------------  neu
  Just1_32Dsgn in '..\..\JUSTONE\Just1_32Dsgn.PAS',
  AliGridReg in 'COMPO\AliGridReg.pas',
{$ENDIF Win32}                             <--------------------  neu
  Aligrid in 'COMPO\Aligrid.pas',
  XFEdit in 'UNI\XFEdit.PAS',
Das funktioniert auch, lässt sich kompilieren.
Wenn ich dann eine Win32 / release/debug Version kompiliere und wieder zu Win64 zurück gehe
sind die {$IFDEF Win32} wieder weg.
Habe irgendwo hier auch schon mal ne Bemerkung gelesen, daß die IDE das wohl gerne macht.
Finde es aber nicht mehr :-(

Was kann man tun außer jedes mal die IFDEFs neu einzutragen?

Charly

himitsu 8. Aug 2022 10:25

AW: IFDEF Win32 verschwindet
 
Mit Delphi 11 funktioniert es besser und nicht alles verschwindet sofort, aber per se sind automatisch verwalteten Teile der Projektdatei nicht für sowas zu nutzen. (bzw. es funktioniert, aber man muß aufpassen, dass diese Projektdatei nicht in der IDE gespeichert wird)

Das betrifft die Requires und auch das Uses in DPR/DPK,
also alles, was in der IDE über die Projektverwaltung verwaltet wird.



Aber du hast hier eh ein Problem in sich selber.
Ein DesignTime-Package ist immer ausschließlich Win32. (es gibt leider noch keine Win64-IDE)

Erstelle dir zusätzlich noch ein Runtime-Package und schon ist das Problem Ad acta.




Kompilierst du mit Laufzeitpackages?
Dann war es früher eh falsch, denn diese Design-Funktion haben nichts im Endprodukt zu suchen.
Und wenn nicht, dann brauchst du das Package sowieso nur als Win32, weil es ausschließlich von der IDE benutzt wird.

Rolf Frei 8. Aug 2022 12:42

AW: IFDEF Win32 verschwindet
 
Ist dir klar, dass du auch 32 Bit ISAPI nutzen kannst und nicht auf 64 Bit gezwungen bist? Das ist eine IIS Einstellung im verwendeten AppPool. Dort kannst du unter Erweiterte Einstellugnen "32-Bit-Anwendungen aktiviereren" auf True setzen. So kann die ISAPI 32 Bit sein, auch auf einem Win64 Server.

Andreas13 8. Aug 2022 13:17

AW: IFDEF Win32 verschwindet
 
Hallo,
ich weiß nicht, ob es bei Delphi 10.2 Tokyo anders ist als bei meinem "alten" XE5, aber die korrekte Syntax lautet nicht so:
Zitat:


{$IFDEF Win32} <-------------------- neu
designide,
{$ENDIF Win32} <-------------------- neu
...
sondern nur
Delphi-Quellcode:
...
{$IFDEF Win32} 
  designide,
{$ENDIF}      <-------------------- so
...
Vielleicht hängt es damit zusammen?
Grüße
Andreas

Uwe Raabe 8. Aug 2022 13:42

AW: IFDEF Win32 verschwindet
 
Der Compiler ist in diesem Bereich ziemlich resilient. Die Auswertung der Compiler Directive bricht beim ersten unerwarteten Zeichen ab, behält aber die bis dahin ermittelte Bedeutung. Aus diesem Grund geht ja auch sowas:
Delphi-Quellcode:
{$IF CompilerVersion < 34.0 Delphi 10.4 Sydney }
    function ScaleValue(const Value: Integer): Integer;
{$ENDIF}

Rollo62 8. Aug 2022 15:59

AW: IFDEF Win32 verschwindet
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1509881)
Der Compiler ist in diesem Bereich ziemlich resilient. Die Auswertung der Compiler Directive bricht beim ersten unerwarteten Zeichen ab, behält aber die bis dahin ermittelte Bedeutung. Aus diesem Grund geht ja auch sowas:
Delphi-Quellcode:
{$IF CompilerVersion < 34.0 Delphi 10.4 Sydney }
    function ScaleValue(const Value: Integer): Integer;
{$ENDIF}

Jupp, ich kann auch bestätigen dass dies bei $ENDIF oder $ELSE kein Problem für den Compiler ist
Delphi-Quellcode:
{$IFDEF Win32} 
  designide,
{$ELSE WIN32_ELSE }      <-------------------- so
 ....
{$ENDIF WIN32_ELSE}       <-------------------- so

charly52 9. Aug 2022 08:09

AW: IFDEF Win32 verschwindet
 
Danke für die Infos.

@ Rolf Frei. Das war mir so nicht klar, irgendwo hatte ich was gefunden, was das Gegenteil behaupted. Aber an die 64bit werde ich mich ja eh irgendwann gewöhnen müssen.


Zitat:

Zitat von himitsu (Beitrag 1509864)
Mit Delphi 11 funktioniert es besser und nicht alles verschwindet sofort, aber per se sind automatisch verwalteten Teile der Projektdatei nicht für sowas zu nutzen. (bzw. es funktioniert, aber man muß aufpassen, dass diese Projektdatei nicht in der IDE gespeichert wird)

Das betrifft die Requires und auch das Uses in DPR/DPK,
also alles, was in der IDE über die Projektverwaltung verwaltet wird.

Wie muss ich das verstehen? Wie kann ich verhindern daß diese Projektdatei in der IDE gespeichert wird? Oder wie kann man es sonst regeln?

Danke!

himitsu 9. Aug 2022 10:58

AW: IFDEF Win32 verschwindet
 
Wir hatten auch sowas, aber weil es im XE immer kaputt gemacht wurde, hatten wir diese Teile dann in eine Unit ausgelagert,
zumindestens bei den USES funktioniert es.

Seit Delphi 11 macht Delphi sowas nicht mehr (seltener) kaputt, so als wenn sie IF/IFDEF dort jetzt halbwegs beachten würden.



Auch gibt es noch das
Delphi-Quellcode:
{$IFDEF IMPLICITBUILDING}
, oben um die CompilerSettings, welches im XE immer kaputtgemacht (entfernt) wurde,
denn egal was jemand behauptet, dieser Schreißdreck darf NIEMALS kompilert werden.
Die "richtigen" Settings kommen aus dem Projekt und Delphi speichert in der DPR/DPK nur die BASIS-Settings, aber kompiliert wird z.B. mit "Debug" oder "Release", womit hier Alles schief stünde, würde damit kompiliert.

Auch beim IMPLICIT-BUILDING ist der Dreck ein totaler Mister, weil, wie gesagt, sind es die falschen Settings und bei Implizit wird die DPROJ ignoriert, also wirklich ALLES ist falsch, weil der Compiler nichtmal weiß, wo er dieses Compilat ausgeben soll. (das Standard-Package-Verzeichnis von Delphi ist es bei uns jedenfalls nicht)






Zitat:

Zitat von Andreas13 (Beitrag 1509879)
sondern nur
Delphi-Quellcode:
...
{$IFDEF Win32} 
  designide,
{$ENDIF}      <-------------------- so

Jupp, ist egal.

bei ENDIF und ELSE ab dem ersten und IFDEF ab dem zweiten "Parameter" wird es vom Compiler einfach quasi als Kommentar erkannt, also quasi ignoriert.

Besonders blöd bei Ressourcen, wo der zweiter Parameter nur in DPR/DPR genutzt wird, aber in PAS wird er einfach ohne Hinweis/Meldung ignoriert.
Delphi-Quellcode:
{$R abc.res abc.rc}
(direkt im Projekt, kann Delphi dort die RC selber compilieren und so die RES aktualisieren)

charly52 10. Aug 2022 08:47

AW: IFDEF Win32 verschwindet
 
Hi

vieleicht sollte man mehr auf Embarcadero einwirken, daß die sich lieber mal um eine stabile IDE kümmern, als dauernd neue Features rauszubringen.
Die Frage ist nur WIE?

Charly

himitsu 10. Aug 2022 09:31

AW: IFDEF Win32 verschwindet
 
quality.embarcadero.com :stupid:


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