AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Compiler Direktive

Ein Thema von mwilms · begonnen am 4. Nov 2023 · letzter Beitrag vom 4. Nov 2023
Antwort Antwort
mwilms

Registriert seit: 23. Nov 2022
Ort: Wolfratshausen
40 Beiträge
 
Delphi 12 Athens
 
#1

Delphi Compiler Direktive

  Alt 4. Nov 2023, 11:46
Hallo,

Habe Frage zur bedingten Compilierung. Der folgende Code funktioniert nicht. Ich will "push rbx" anstelle von "push ebx" compilieren lassen, wenn "Windows 64" Modus aktiv ist. Zweite Frage ist {$DEFINE WIN64} überhaupt erforderlich oder ist das eine Compiler Variable?

{$DEFINE WIN64}
{$If WIN64}
push rbx
{$else}
push ebx
{$endif}

Vielen Dank

mwilms
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#2

AW: Delphi Compiler Direktive

  Alt 4. Nov 2023, 12:02
Hallo,

es müßte doch so heißen:
Delphi-Quellcode:
{$ifdef WIN64}
push rbx
{$else}
push ebx
{$endif}
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von FriedrichAT
FriedrichAT

Registriert seit: 25. Mai 2019
Ort: Wien
34 Beiträge
 
Delphi 12 Athens
 
#3

AW: Delphi Compiler Direktive

  Alt 4. Nov 2023, 13:18
Hallo!
Hier für Debug bzw. Release / 32 od. 64

Delphi-Quellcode:
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);

  {$IFDEF DEBUG}
    {$IFDEF WIN32}
    //Form1.Caption:= 'FM Hashtest Debug-X32';
    //Application.Title:= 'FM Hashtest Debug-X32';
    {$ENDIF WIN32}

    {$IFDEF WIN64}
     //Form1.Caption:= 'FM Hashtest Debug-X64';
     //Application.Title:= 'FM Hashtest Debug-X64';
     {$ENDIF WIN64}
  {$ENDIF DEBUG}

  {$IFDEF RELEASE}
    {$IFDEF WIN32}
    //Form1.Caption:= 'FM Hashtest - X32';
    //Application.Title:= 'FM Hashtest - X32';
    {$ENDIF WIN32}

    {$IFDEF WIN64}
    //Form1.Caption:= 'FM Hashtest - X64';
    //Application.Title:= 'FM Hashtest - X64';
    {$ENDIF WIN64}
  {$ENDIF RELEASE}


  Application.Run;
end.
Friedrich
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Delphi Compiler Direktive

  Alt 4. Nov 2023, 14:23
Genau, da es ein DEFINE ist, muß es {$IFDEF...} {$ENDIF} heißen,

denn {$IF prüft eine Expression ("echte" Konstanten, sowie ein paar Compiler-Funktionen),
also {$IF Defined(WIN64)} {$IFEND} , oder

Delphi-Quellcode:
const
  aaa = 123;
  bbb = False;

{$IF aaa = 456}

{$IF (aaa = 123) and (CompilerVersion >= 21.0) and bbb}
$2B or not $2B

Geändert von himitsu ( 4. Nov 2023 um 14:25 Uhr)
  Mit Zitat antworten Zitat
mwilms

Registriert seit: 23. Nov 2022
Ort: Wolfratshausen
40 Beiträge
 
Delphi 12 Athens
 
#5

AW: Delphi Compiler Direktive

  Alt 4. Nov 2023, 15:12
Vielen Dank! Es funktioniert mit "ifdef". WIN64 muss außerdem nicht definiert werden.

mwilms
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:38 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