AGB  ·  Datenschutz  ·  Impressum  







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

''case erwartet Konstantenausdruck

Ein Thema von Codehunter · begonnen am 19. Feb 2018 · letzter Beitrag vom 19. Feb 2018
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

''case erwartet Konstantenausdruck

  Alt 19. Feb 2018, 10:34
Delphi-Version: 10 Seattle
Moin!

Ich steh grad etwas auf dem Schlauch. Der Compiler mäkelt einen fehlenden Konstantenausdruck an, der aber eine Konstante ist:
Delphi-Quellcode:
unit server_capabilities;

interface

type
  TServerBranch = (sbOther, sbMariaDB, sbMySQL);
  TServerFeature = Integer;
  TServerMutableString = Integer;
  TServerVersion = Integer;

const
  SRVFT_USER_ROLES: TServerFeature = $100001;

  SRVMS_PASSWORD_COLUMN: TServerMutableString = $200001;

type
  TServerCapabilities = class
  private
    FServerBranch: TServerBranch;
    FServerVersion: TServerVersion;
  public
    constructor Create(Branch: TServerBranch; Version: TServerVersion); virtual;
    function HasFeature(const AFeature: TServerFeature): Boolean; virtual;
    function MutableString(const AMutableString: TServerMutableString): string; virtual;
  end;

implementation

{ TServerCapabilities }

constructor TServerCapabilities.Create(Branch: TServerBranch;
  Version: TServerVersion);
begin
  FServerBranch:= Branch;
  FServerVersion:= Version;
end;

function TServerCapabilities.HasFeature(
  const AFeature: TServerFeature): Boolean;
begin
  Result:= FALSE;
  case FServerBranch of
    sbMariaDB:
    begin
      case AFeature of
        SRVFT_USER_ROLES: // <-- [dcc32 Fehler] server_capabilities.pas(45): E2026 Konstantenausdruck erwartet
          Result:= (FServerVersion >= 100005);
      end;
    end;

    sbMySQL:
    begin
      case AFeature of
        SRVFT_USER_ROLES: // <-- [dcc32 Fehler] server_capabilities.pas(45): E2026 Konstantenausdruck erwartet
          Result:= (FServerVersion >= 80000);
      end;
    end;
  end;
end;

function TServerCapabilities.MutableString(
  const AMutableString: TServerMutableString): string;
begin
  Result:= '';
  case FServerBranch of
    sbMariaDB:
    begin
      case AMutableString of
        SRVMS_PASSWORD_COLUMN: // <-- [dcc32 Fehler] server_capabilities.pas(45): E2026 Konstantenausdruck erwartet
          Result:= 'Password';
      end;
    end;

    sbMySQL:
    begin
      case AMutableString of
        SRVMS_PASSWORD_COLUMN: // <-- [dcc32 Fehler] server_capabilities.pas(45): E2026 Konstantenausdruck erwartet
        begin
          if FServerVersion >= 50706 then
            Result:= 'authentication_string'
          else
            Result:= 'password';
        end;
      end;
    end;
  end;
end;

end.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von TRomano
TRomano

Registriert seit: 24. Nov 2004
Ort: Düsseldorf
193 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: ''case erwartet Konstantenausdruck

  Alt 19. Feb 2018, 10:36
Nach einem kurzen Blick sehe ich typisierte Konstanten und mit denen geht das nicht !
Thomas Forget
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ''case erwartet Konstantenausdruck

  Alt 19. Feb 2018, 10:43
Nach einem kurzen Blick sehe ich typisierte Konstanten und mit denen geht das nicht !
Nach einem kurzen Blick auf Kalender und Uhr stelle ich fest: Es ist Montag Morgen und der Koffeinspiegel ist im Keller

Danke, Problem gelöst!
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ''case erwartet Konstantenausdruck

  Alt 19. Feb 2018, 10:58
Jupp, typisierte Konstanten sind eigentlich "nur" schreibgeschützte Variablen, aber Nichttypisierte ...

Delphi-Quellcode:
const
  SRVFT_USER_ROLES = TServerFeature($100001);

  SRVMS_PASSWORD_COLUMN = TServerMutableString($200001);

18 Uhr in China, aber die haben eh gade alle gleichzeitig ihren einwöchigen Jahresurlaub zum Jahresanfang, also passt doch ... niemand denkt, vorallem da sie den Anfang schonwieder um 2 Monate verpasst haben.
$2B or not $2B

Geändert von himitsu (19. Feb 2018 um 11:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: ''case erwartet Konstantenausdruck

  Alt 19. Feb 2018, 11:53
Jupp, typisierte Konstanten sind eigentlich "nur" schreibgeschützte Variablen, aber Nichttypisierte ...

Delphi-Quellcode:
const
  SRVFT_USER_ROLES = TServerFeature($100001);

  SRVMS_PASSWORD_COLUMN = TServerMutableString($200001);
Ich nehme die Tatsache, dass das so ist, einfach mal als gegeben hin Obwohl es sich auf den ersten Blick nicht logisch erschließt.

18 Uhr in China, aber die haben eh gade alle gleichzeitig ihren einwöchigen Jahresurlaub zum Jahresanfang, also passt doch ... niemand denkt, vorallem da sie den Anfang schonwieder um 2 Monate verpasst haben.
Und sind in diesem Jahr auf den Hund gekommen
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: ''case erwartet Konstantenausdruck

  Alt 19. Feb 2018, 12:01
Obwohl es sich auf den ersten Blick nicht logisch erschließt.
Das ist aus Kompatibilitätsgründen für Programme mit {$J+} gedacht, bei der solche typisierten Konstante beschreibbar und somit eigentlich initialisierte, globale Variablen waren. Faktisch werden sie vom Compiler immer noch so implementiert. Lediglich das Beschreiben ist mit {$J-} nicht mehr erlaubt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 01:10 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