AGB  ·  Datenschutz  ·  Impressum  







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

Const record

Ein Thema von hansmaad · begonnen am 9. Jul 2010 · letzter Beitrag vom 9. Jul 2010
Antwort Antwort
Seite 1 von 2  1 2      
hansmaad

Registriert seit: 25. Feb 2010
52 Beiträge
 
Delphi 2010 Professional
 
#1

Const record

  Alt 9. Jul 2010, 10:35
Delphi-Version: 2010
Hallo Zusammen...
Ich möchte ein const record deklarieren, das selber ein record Feld besitzt:

Delphi-Quellcode:
type
    A = record
        x : Integer;
        y : Integer;
    end;

    B = record
        xy : A;
        z : Integer;
    end;
const
    AA : A = (x : 0; y : 0);
    BB : B = (xy : AA; z : 0); // <--
Code:
 E2029 '(' erwartet, aber Bezeichner 'AA' gefunden
Geht das nicht?

Danke&Grüße
hansmaad
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Const record

  Alt 9. Jul 2010, 10:38
Versuch mal
BB : B = (xy : (AA); z : 0);
Markus Kinzler
  Mit Zitat antworten Zitat
hansmaad

Registriert seit: 25. Feb 2010
52 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Const record

  Alt 9. Jul 2010, 10:43
Das hatte ich auch schon ausprobiert.
BB : B = (xy : (AA); z : 0);
Code:
E2003 Undeklarierter Bezeichner: 'AA'
Edit:

Das geht: (ich mein zwar auch das schon ausprobiert zu haben, aber nu gehts)
BB : B = (xy : (x : 0; y : 0); z : 0);
Mich würde trotzdem noch interessieren, ob es auch eine Lösung gibt, die AA verwendet.

Geändert von hansmaad ( 9. Jul 2010 um 10:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Const record

  Alt 9. Jul 2010, 10:45
Typisierte Konstanten sind ja keine echten Konstanten
(es sind nur schreibgeschützte Variablen)

Also könnte es sein, daß die strenge Typenprüfung AA also nicht richtig als Konstante an dieser Stelle anerkennt.

BB : B = (xy : (x : 0; y : 0); z : 0); .

BB : B = (xy : (x : AA.x; y : AA.y); z : 0);
$2B or not $2B
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#5

AW: Const record

  Alt 9. Jul 2010, 10:47
Es dürfen nur konstante Ausdrücke verwendet werden. "Typed const" sind nicht konstant. Man kann keinen konstanten Record definieren.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Const record

  Alt 9. Jul 2010, 10:54
"echte" Konstante:
const NAME = WERT; .

typisierte Konstante:
const NAME: TYP = WERT; .

(falls jemand den Unterschied nicht gleich erkennt)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Const record

  Alt 9. Jul 2010, 11:03
Folgendes würde funktionieren:
Delphi-Quellcode:
type
  PA = ^A;
  A = record
    x: Integer;
    y: Integer;
  end;

  B = record
    xy: PA;
    z: Integer;
  end;
  
const
  AA: A = (x: 10; y : 0);
  BB: B = (xy: @AA; z : 0);
  Mit Zitat antworten Zitat
hansmaad

Registriert seit: 25. Feb 2010
52 Beiträge
 
Delphi 2010 Professional
 
#8

AW: Const record

  Alt 9. Jul 2010, 11:15
Danke euch allen, gute Infos

Aber was genau heißt denn "typisierte Konstanten sind nicht konstant"?

AA.x := 1; führt zu der von mir erwarteten Fehlermeldung ".. kann nichts zugewiesen werden".
AA ist eine typisierte Konstante und für mich ziemlich konstant. Falsch?
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#9

AW: Const record

  Alt 9. Jul 2010, 11:17
Über den Compiler-Schalter {$J+} solltest Du solche Konstanten dennoch beschreiben können
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
hansmaad

Registriert seit: 25. Feb 2010
52 Beiträge
 
Delphi 2010 Professional
 
#10

AW: Const record

  Alt 9. Jul 2010, 11:40
Über den Compiler-Schalter {$J+} solltest Du solche Konstanten dennoch beschreiben können
Aha...ok... naja ich will das ja gar nicht

Und gleich noch eine Frage zu const.
Delphi-Quellcode:
procedure Foo;
const
  AA : A = (x : 0; y : 0);
begin
 //...
end;
Wann wird AA initialisiert? First call, bei jedem Call, bei Programmstart...?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:09 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