![]() |
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:
Das funktioniert auch, lässt sich kompilieren.
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', 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 |
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. |
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.
|
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:
Delphi-Quellcode:
Vielleicht hängt es damit zusammen?
...
{$IFDEF Win32} designide, {$ENDIF} <-------------------- so ... Grüße Andreas |
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} |
AW: IFDEF Win32 verschwindet
Zitat:
Delphi-Quellcode:
{$IFDEF Win32}
designide, {$ELSE WIN32_ELSE } <-------------------- so .... {$ENDIF WIN32_ELSE} <-------------------- so |
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:
Danke! |
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:
, oben um die CompilerSettings, welches im XE immer kaputtgemacht (entfernt) wurde,
{$IFDEF IMPLICITBUILDING}
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:
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:
(direkt im Projekt, kann Delphi dort die RC selber compilieren und so die RES aktualisieren)
{$R abc.res abc.rc}
|
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 |
AW: IFDEF Win32 verschwindet
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 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-2025 by Thomas Breitkreuz