![]() |
[GELÖST] Compilerschalter $J+ ohne Funktion?
Zuweisbare typisierte Konstanten funktionieren hier nur, wenn ich das in den Projektoptionen setze. {$J+} oder {$WRITEABLECONST ON} im Quelltext hat überhaupt keine Auswirkung. Getestet in Delphi XE6 und 10.2. Was mache ich falsch?
|
AW: Compilerschalter $J+ ohne Funktion?
Die Konstante muss typisiert sein, also nicht
Delphi-Quellcode:
, sondern
const number = 42
Delphi-Quellcode:
Die Konstante darf nicht inline sein, sondern muss (wie früher) vor dem
const number: Byte = 42
Delphi-Quellcode:
des Blocks deklariert worden sein.
begin
Hier ein Beispiel das funktioniert:
Delphi-Quellcode:
program Project1;
{$WRITEABLECONST ON} const number: Byte = 42; begin number := 99; end. |
AW: Compilerschalter $J+ ohne Funktion?
Danke.
Ich hatte den Schalter an der falschen Stelle gesetzt... :oops: |
AW: [GELÖST] Compilerschalter $J+ ohne Funktion?
Wo?
In einer anderen Unit? In Units sollte er "eigentlich" von der Deklaration, bis zum Unit-Ende funktionieren, also sobald er vor/über dem VAR steht. Bezüglich Schaltern für Warnungen und Fehlerprüfung, hatte ich es aber auch schon, dass man Diese nicht zu nah definieren sollte.
Delphi-Quellcode:
Hier ist es schon passiert, dass das OFF bereits angewendet, bevor machwas ausgeführt wurde. :freak:
if irgendwas then
{$xyz on} machwas {$xyz off} ; |
AW: [GELÖST] Compilerschalter $J+ ohne Funktion?
Zitat:
Code:
procedure Bla;
const test: string = 'nein'; begin {$J+} test := 'ja'; {$J-} end; |
AW: [GELÖST] Compilerschalter $J+ ohne Funktion?
{$J} betrifft die Deklaration der Konstante, nicht die Nutzung.
Delphi-Quellcode:
Allerdings :duck:
procedure Bla;
{$J+} const test: string = 'nein'; {$J-} begin test := 'ja'; end;
Delphi-Quellcode:
Aber z.B. als Inline läuft das {$J} nicht so, wie man es sich denkt,
var test: string = 'nein';
procedure Bla; begin test := 'ja'; end; obwohl Variablen und Konstanten seit Delphi 10.3 per se sowas können.
Delphi-Quellcode:
Wobei {$J+} hier garkeinen Einfluß hat, egal wo deklariert ... nichtmal als Parameter -J+ für den Compiler .
procedure Bla;
begin {$J+} const test: string = 'nein'; {$J-} test := 'ja'; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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