Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Undeklarierter Bezeichner bei Konstantendeklaration (https://www.delphipraxis.net/197402-undeklarierter-bezeichner-bei-konstantendeklaration.html)

Codehunter 4. Aug 2018 05:19

Delphi-Version: 10.2 Tokyo

Undeklarierter Bezeichner bei Konstantendeklaration
 
Moin!

Heute zum Einstieg mal eine kurze und ganz blöde Frage: Wieso das denn?

Delphi-Quellcode:
type
  TPageMain = (pmWelcome, pmSettings);

  TfrmMain = class(TForm)
    pagWillkommen: TTabItem;
    pagEinstellungen: TTabItem;
  public const
    PG_MAIN: array[TPageMain] of TTabItem = (pagWillkommen, pagEinstellungen); // <-- Undeklarierter Bezeichner 'pagWillkommen'
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frmMain: TfrmMain;
Grüße
Cody

Der schöne Günther 4. Aug 2018 10:56

AW: Undeklarierter Bezeichner bei Konstantendeklaration
 
Weil eine Konstante in Delphi für alle Instanzen der Klasse gleich ist. Die Referenzen
Delphi-Quellcode:
pagWillkommen
und
Delphi-Quellcode:
pagEinstellungen
sind aber bei jedem Objekt individuell.

DieDolly 4. Aug 2018 11:47

AW: Undeklarierter Bezeichner bei Konstantendeklaration
 
Mich interessiert auch, warum das nicht funktioniert.
Kannst du das mit gleich und individuell auch so erklären, dass normale Leute es verstehen? :stupid:

himitsu 4. Aug 2018 12:10

AW: Undeklarierter Bezeichner bei Konstantendeklaration
 
pagWillkommen existiert "jetzt" noch nicht, da es erst im Zusammenhang mit einer späteren Objektinstanz verfügbar ist.

In diesem Fall is wohl ein Arrayproperty sinnvoller, welches zur Laufzeit über dessen Getter auf die gewünschten Instanzen liefert.
Delphi-Quellcode:
function GetPgMain(Index: TPageMain): TTabItem;
property PG_MAIN[Index: TPageMain] read GetPgMain;
Oder halt direkt diese Funktion. :stupid:

Delphi-Quellcode:
const
,
Delphi-Quellcode:
class var
und
Delphi-Quellcode:
class function
ist global und kann nicht auf irgendwas der Instanz(en) zugreifen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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