Entwickler-Ecke
Andere .NET-Sprachen - Zugriff auf Konstanten in Package?
jahuer1 - Mo 14.02.05 18:29
Titel: Zugriff auf Konstanten in Package?
Ich habe ein Package erstellt mit einer unit myInterface.pas. Dort sind im Interface-Teil diverse Konstanten und Typen definiert. Bsp:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| interface myInterface;
uses ...
const c1 = $00000000; c2 = $00000001; c3 = $00000002; c4 = $00000003;
type TmyTyp1 = c1..c4; |
Ich habe nun mein Package kompiliert und binde es als Referenz in mein Hauptprogramm ein. Dort definiere ich eine lokale Variable vom Typ TmyTyp1. Diese soll nun mit dem Wert c1 initialisiert werden. Also etwa so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| var v1 : myInterface.TmyTyp1;
procedure init; begin ... v1:=myInterface.c1; ... end; |
Das Problem:
Als mögliche, zu verwendende Werte für eine Variable vom Typ TmyTyp1 gibt mir nun die IDE nur einen Bereich MinValue..MaxValue an - und nicht c1..c4! :( Ein Wert c1 etc. wird auch nicht akzeptiert, wenn man ihn mal so reinschreibt (entweder "nicht bekannt" oder "inkompatibler Typ"). Auch wenn man mit dem Cursor auf die Variablendeklaration geht und die Typ-Info im Hint abfragt, kriegt man den (falschen) Bereich MinValue..MaxValue angezeigt.
Wo liegt das Problem?
Moderiert von
UGrohne: Code- durch Delphi-Tags ersetzt.
AXMD - Mo 14.02.05 18:34
Ist ja klar: v1 ist vom Typ TmyTyp1, c1 nicht.
AXMD
jahuer1 - Mo 14.02.05 19:13
Jein!
0. In Delphi 7 (und vorher) lief dies immer ohne Probleme (und es gibt wohl kaum eine Typ-striktere Sprache
als Delphi...[Grüsse an Prof. Wirth!])
1. TmyTyp bezeichnet ja einen Bereich (c1..c4). In "init" mache ich eine Zuweisung aus diesem Bereich. Was
wäre daran nicht typenkonform?
Zudem: Wenn ich die Konstanten in der gleichen Unit definiere wie TmyTyp1, so kann ich nicht auf die Konstanten zugreifen, obwohl sie im interface-Teil stehen. Das finde ich auch nicht ganz normal!
AXMD - Mo 14.02.05 19:16
c1 ist Integer, v1 ist dein "eigener" Typ. da v1 komplett in den Integer-Typ passt, meldet der Compiler auch nichts ;). Du kannst ja einem Integer auch eine Word-Variable zuweisen ;)
AXMD
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!