Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Konstantes Array of Record deklarieren (https://www.delphipraxis.net/217463-konstantes-array-record-deklarieren.html)

dummzeuch 3. Jul 2025 17:24

Delphi-Version: 12 Athens

Konstantes Array of Record deklarieren
 
Ich stehe gerade auf dem Schlauch.

Ich will ein dynamisches Array von Records als Konstante deklarieren. Eigentlich dachte ich, das geht so:

Delphi-Quellcode:
type
  TKameraTypRec = record
    Name: string;
    Breite: Integer;
    Hoehe: Integer;
    PixelSizeX: Extended;
    PixelSizeY: Extended;
  end;
  TKameraTypArr = array of TKameraTypRec;

const
  CAM_TYPES: TKameraTypArr = (
    (Name: 'GT1920'; // <== Compilefehler hier
     Breite: 1920;
     Hoehe: 1080;
     PixelSizeX: 0.00000586;
     PixelSizeY: 0.00000586)
    );
Aber der Compiler in Delphi 12 ist anderer Meinung:
Code:
[dcc32 Error] wf_Kamera.pas(84): E2003 Undeclared identifier: 'Name'
Erst, wenn ich explizit eine Array-Länge setze, funktioniert es:

Delphi-Quellcode:
type
  TKameraTypArr = array[0..0] of TKameraTypRec;
const
  CAM_TYPES: TKameraTypArr = (
    (Name: 'GT1920'; Breite: 1920; Hoehe: 1080; PixelSizeX: 0.00000586; PixelSizeY: 0.00000586)
    );
Ich dachte, das war eine der Neuerungen in einer der letzten Delphi-Versionen, dass man bei Array-Konstanten keine Länge mehr angeben muss???

:gruebel:

Uwe Raabe 3. Jul 2025 17:47

AW: Konstantes Array of Record deklarieren
 
So sollte es gehen:
Delphi-Quellcode:
const
  CAM_TYPES_0: TKameraTypRec =
     (Name: 'GT1920'; // <== Compilefehler hier
     Breite: 1920;
     Hoehe: 1080;
     PixelSizeX: 0.00000586;
     PixelSizeY: 0.00000586
    );

const
  CAM_TYPES: TKameraTypArr = [CAM_TYPES_0];

himitsu 3. Jul 2025 17:59

AW: Konstantes Array of Record deklarieren
 
Typisierte Konstanten sind IMMER "schreibgeschützte" Variaben.

Bei Strings, geht die Referenzzählung auf -1, für Konstanten ... bei Arrays klappt hier die Deklaration meistens nicht, für dynamische Arrays.


Wenn das NEUE, was der Vorgänger zeigt, klappt, dann hast du Glück.



Man kann hier zwar auch tricksen, aber du willst bestimmt nicht böse Casten und als Dummy die Arraystrucktur selbst zusammenklöppeln?

TomyN 5. Jul 2025 21:51

AW: Konstantes Array of Record deklarieren
 
Hmm, Name wird fett dargestellt, ist das evtl. ein reserviertes Wort?

himitsu 5. Jul 2025 22:33

AW: Konstantes Array of Record deklarieren
 
Ja/Nein.
Das Highlighting im Forum arbeitet auch etwas anders, als das in der Delphi-IDE
und selbst das Highlighting in der IDE ist nicht immer korrekt.


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