![]() |
Delphi 11.3 - Packages und {$IF
Für mein "kleines" Projekt auf
![]() Zu diesem Zweck wollte ich mal zumindest ein "Conditional Compile" einfügen, dass keine assembleroptimierten Versionen der Funktionen einbindet. Dazu wollte ich im Package file (mrmath.dpk) folgende Zeilen einfügen: {$IF not defined(x86) and not defined(x64)} {$DEFINE MRMATH_NOASM} {$ifend} und auch {$IF CompilerVersion >= 340} {$LIBSUFFIX AUTO} {$IFEND} und dann später im File, an der Stelle an der die Dateien eingefügt werden: {$IFNDEF MRMATH_NOASM} ASMMatrixAddSubOperations in '..\..\ASMMatrixAddSubOperations.pas', ASMMatrixAddSubOperationsx64 in '..\..\ASMMatrixAddSubOperationsx64.pas', ASMMatrixElementwiseMultOperations in '..\..\ASMMatrixElementwiseMultOperations.pas', ASMMatrixElementwiseMultOperationsx64 in '..\..\ASMMatrixElementwiseMultOperationsx64.pas', ... (und noch ein dutzend anderer Dateien) {$ENDIF} Das Konstrukt wird in der IDE immer als "ausgegraut" dargestellt, beim Compilieren aber werden die Datein importiert allerdings mit der Warnung, dass diese "implizit" eingefügt werden. {$IF CompilerVersion >= 340} {$LIBSUFFIX AUTO} {$IFEND} Das Konstrukt funtioniert überhaupt nicht - das IF kann vom Compiler nicht evaluiert werden und wird als Fehler ausgegeben. Hat da wer ne Idee? |
AW: Delphi 11.3 - Packages und {$IF
Zitat:
Delphi-Quellcode:
Grüße, Andreas
{$IFNdef CPUX86} AND {$IFNdef CPUX64}
|
AW: Delphi 11.3 - Packages und {$IF
Ja, x68/x64 gibt es nicht, dort die anderen Namen.
Ansonsten sollte es egal sein ob
Delphi-Quellcode:
oder
{$IFnDEF xxx
Delphi-Quellcode:
,
{$IF not Defined(xxx)
wobei das IF den Vorteil von AND, OR und NOT hat. |
AW: Delphi 11.3 - Packages und {$IF
Autsch... danke für den Hinweis... ich hatte diese Defines in den anderen Files definiert (auch mit FPC Kompatibilität im Hinterkopf...).
Weiß nur eventuell wer warum das {$IF CompilerVersion >= 340} einen Fehler verursacht? dcc32 E2026: Konstantenausdruck erwartet |
AW: Delphi 11.3 - Packages und {$IF
Hast du dafür auch eine eigene Konstante? (zusätzlich zu der in System.pas)
Hier kann man nur "echte" Konstanten benutzen, keine typisierten Konstanten (schreibgeschützte Variablen). Und DEFINEs werden nicht über Unitgrenzen hinweg durchgereicht. Das geht nur beim
Delphi-Quellcode:
.
{$INCLUDE
|
AW: Delphi 11.3 - Packages und {$IF
Die CompilerVersion von Delphi 11 ist 35.0 - 340 ist also noch eine Weile hin...
|
AW: Delphi 11.3 - Packages und {$IF
Ja die Versio stimmt ned so richtig (habs eh auch mit 34.0 probiert...) aber...
es scheint dieses {$If Compilerversion....} darf nicht im dpk gemacht werden - es geht in den Units aber nicht im dpk (warum eigentlich??) In Delphi2010 hab ichs eh auch nicht zum Laufen gebracht also denk ich mal es war schon immer so... Es wird also mit {$libsuffix auto} nichts werden ;) (inklusive der ganzen QC die das eh schon hat) |
AW: Delphi 11.3 - Packages und {$IF
Zitat:
|
AW: Delphi 11.3 - Packages und {$IF
Oh wow... das wusste ich nicht. Ich dachte das wäre was, was ja tatsächlich vom Compiler zur Verfügung gestellt wird,
ähnlich wie CPUX86 Aber gut, dann wird sich für mich ein automatisches Libsuffix nicht spielen... |
AW: Delphi 11.3 - Packages und {$IF
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:15 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