AGB  ·  Datenschutz  ·  Impressum  







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

Compilerschalter auslesbar?

Ein Thema von DeddyH · begonnen am 17. Sep 2009 · letzter Beitrag vom 17. Sep 2009
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.617 Beiträge
 
Delphi 12 Athens
 
#1

Compilerschalter auslesbar?

  Alt 17. Sep 2009, 19:36
Moin,

ich steh gerade auf dem Schlauch. Ich möchte einen Compilerschalter (Rangechecks) temporär umstellen, diesen aber später wieder in den alten Zustand versetzen. Dazu müsste ich ja den alten Zustand erst einmal erfragen. Geht das überhaupt und wenn ja, wie? Ich meinte das in der Art
Delphi-Quellcode:
{$IF RANGECHECKS}
  {$DEFINE WAR_AN}
    {$RANGECHECKS OFF}
    //Hier der entsprechende Code
  {$IFDEF WAR_AN}
    {$RANGECHECKS ON}
  {$ENDIF}
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Compilerschalter auslesbar?

  Alt 17. Sep 2009, 19:41
ja > [oh]$IFOPT[/oh] , aber das geht nur bei kompilerschaltern, welche aus einem Buchstaben mit + oder - bestehen

in deinem Fall geht das , da {$RANGECHECKS ON} = {$R+}

und du wirst es nicht glauben, aber rate mal, welches Beispiel die OH zu [oh]$IFOPT[/oh] hat?

Delphi-Quellcode:
{$IFOPT R+}
  Writeln('Mit Bereichsprüfung compiliert');
{$ENDIF}
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.617 Beiträge
 
Delphi 12 Athens
 
#3

Re: Compilerschalter auslesbar?

  Alt 17. Sep 2009, 20:08
Danke sehr.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Compilerschalter auslesbar?

  Alt 17. Sep 2009, 20:09
Hallo Detlef,

ich habe mir zu diesem Zweck ein paar Include-Dateien angelegt:

Code:
Datei "R+.pas"

  {$ifopt R-}
    {$undef RangeCheckWasOn}
    {$R+}
  {$else}
    {$define RangeCheckWasOn}
  {$endif}

Datei "R-.pas"

  {$ifopt R+}
    {$define RangeCheckWasOn}
    {$R-}
  {$else}
    {$undef RangeCheckWasOn}
  {$endif}

Datei "R=.pas"

  {$ifdef RangeCheckWasOn}
    {$R+}
  {$else}
    {$R-}
  {$endif}
Die Dateien liegen in einem Bibliotheksverzeichnis und sind somit für alle Projekte verfügbar.

Anwendung:

Delphi-Quellcode:
{$I R+} // RangeCheck einschalten
...
{$I R=} // RangeCheck auf vorigen Zustand setzen
Das Konzept stammt noch aus den Zeiten von Turbo Pascal. Damals wurde der Schalter "=" allerdings noch direkt vom Compiler unterstützt, so dass der Umweg über die Include-Dateien nicht notwendig war.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.617 Beiträge
 
Delphi 12 Athens
 
#5

Re: Compilerschalter auslesbar?

  Alt 17. Sep 2009, 20:15
Auch Dir Danke, ich hab es jetzt so:
Delphi-Quellcode:
uses ...,
    {$IFOPT R+}
    {$DEFINE WAS_CHECKED}
    {$R-}
    {$ENDIF}UnitOhneBereichsprüfung
    {$IFDEF WAS_CHECKED}
    {$R+}
    {$ENDIF};
Ob ich da richtig gedacht habe, wird sich dann zeigen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Compilerschalter auslesbar?

  Alt 17. Sep 2009, 20:21
Nicht ganz, diese Option ist nur unitintern, also dürfte dieses keine Auswirkungen auf die zwischenliegende Unit haben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.617 Beiträge
 
Delphi 12 Athens
 
#7

Re: Compilerschalter auslesbar?

  Alt 17. Sep 2009, 20:24
Da bin ich mir eben nicht sicher, ich hatte vorher vor dem Einbinden {$RANGECHECKS OFF} und dahinter dann wieder das Einschalten. Das hat funktioniert. Zur Gegenprobe die Schalter auskommentiert, und es kamen Fehlermeldungen. Also wieder entkommentiert und alles ist OK. Zufall?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Compilerschalter auslesbar?

  Alt 17. Sep 2009, 20:30
Ich hätte eher an Zufall gedacht, denn sonst könnte man doch die VCL neu kompilieren, nur indem man andere Optionen vor dem Einbinden setzt?

Es ist aber auch schlecht/garnicht erklärt welche Option nun von wo bis wo genau ihre Auswirkungen hat
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.617 Beiträge
 
Delphi 12 Athens
 
#9

Re: Compilerschalter auslesbar?

  Alt 17. Sep 2009, 20:32
Tja, ich weiß es auch nicht. Wenn es jetzt so funktioniert wie gedacht, bleibt es so, ansonsten muss ich mir etwas anderes überlegen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 05:07 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