Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Konstanten Definition
skall - Di 27.01.09 15:05
Titel: Konstanten Definition
morgen...
Also Mal ne Frage...
Ich muss 2 Constanten definieren, die unter Type meiner Unite benötigt werden... Ding ist nur, dass die Constanten sich in einer weiteren Unit definieren... Somit findet er diese nicht...
Ist es Möglich dies Iwei zu umgehen? :o
Hier mal zur verdeutlichung die relewanden Ausschnitte des QuellCodes:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| unit DateioperationenSolar;
interface
uses SysUtils, Dialogs, classes;
Const ersteStunde = StundenListe[1]; letzteStunde = StundenListe[12];
type TStundenMittel = array[ersteStunde..letzteStunde] of real; TDatenSatz = Record wert: real; Stunde: integer; Minute: integer; end;
procedure DatenEinlesen (DatumWert:String; Var MittelWert:TStundenMittel; Var MaxWert:TDatenSatz); procedure DatenSpeichern (MittelWert:TStundenMittel; Var MaxWert:TDatenSatz; Var DatumWert: String);
Var StundenListe : TStundenListe;
implementation uses DatenEinlesen;
Var MittelWertListe : TMittelWerte; StundenListe : TStundenListe; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| unit DatenEinlesen;
interface
uses SysUtils, Dialogs, classes;
type TMittelWerte = array[1..12] of Real; TStundenListe = Array[1..12] of Integer;
ersteStunde := StundenListe[1]; letzteStunde := StundenListe[12]; |
Handelt sich um die beiden Varriablen: ersteStunde und letzteStunde, welche aus der StundenListe definiert werden...
Delete - Di 27.01.09 15:11
Was denn nun, Konstanten oder Variablen? Du kannst keine Konstanten aus einer Variablen befüllen, der Wert muss schon zur Designtime bekannt sein.
JDKDelphi - Di 27.01.09 15:12
Titel: Konstanten
Hallo..
bau Dir eine globale Unit "myTypdef" , wo Du deine Konstanten und Typen definierst.
Diese verwendest Du dann in den beiden Modulen und schon gibt's keine Namenskonflikte..
Mal abgesehen davon, das der Source, den Du dort postest, so eigentlich nicht funktioniert..
Gruss
skall - Di 27.01.09 15:17
ja wie gesagt dass sind nur die relewanten Auschnitte....
skall - Di 27.01.09 15:20
wie jetzt...
Soll ich noch ne Unit schrieben wo die Daten aus der ersten Unit genommen werden und in die Varriablen für die erste Unit definiert werden?
Delete - Di 27.01.09 15:25
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| unit Brückenunit;
interface
type TMittelWerte = array[1..12] of Real; TStundenListe = Array[1..12] of Integer;
const Konst1 = 1; Konst2 = 123; Konst3 = 'Ein String'; ... |
Diese Unit in allen einbinden, die auf diese Daten zugreifen.
JDKDelphi - Di 27.01.09 15:31
Titel: Konstanten
Genauso , wie DeddyH das gepostet hat..
Diese paar Anweisungen sind doch wohl nicht zuviel verlangt, zumal dann ein Ändern im Programm noch sicherer wird, da die Konstanten
nur einmal vorhanden sind...
Gruss
Delete - Di 27.01.09 15:36
Abgesehen davon sind die definierten Typen dann auch kompatibel. Definierst Du denselben Typ in 2 unterschiedlichen Units, sind das für Delphi auch 2 unterschiedliche Typen.
skall - Di 27.01.09 15:43
Lassen Sich Konstaten überhaupt auf sowas wie "StundenListe[1]" festlegen? Weil der zickt da iwie rum...
JayEff - Di 27.01.09 15:56
DeddyH hat folgendes geschrieben : |
| Du kannst keine Konstanten aus einer Variablen befüllen, der Wert muss schon zur Designtime bekannt sein. |
Das reicht eigentlich als Antwort auf deine Frage :)
Designtime = Der Moment, in dem du dein Programm schreibst. Du kannst den Wert nicht aus einer Datei auslesen oder ähnliches.
BenBE - Di 27.01.09 15:58
Delphi-Quelltext
1:
| const Stundenliste: TStundenliste = (1,2,3,4,5,6,7,8,9,10,11,12); |
JDKDelphi - Di 27.01.09 16:01
Titel: Konstanten
Hallo,
Du kannst das so nicht machen, da keine Variable oder ein Typ in eine Konstante gefüllt werden kann.
Const meins = Stundenliste[1] geht nicht!!!
Hier ein kleiner Rumpf, was geht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64:
| Unit myConst
....
CONST Konst1 = 1; Konst2 = 12;
TYPE Verwende = Array[Konst1..Konst2]; ...
END.
Unit Eins;
uses myConst;
......
Var a : Verwende;
Procedure machwas; BEGIN
a[Konst1]=10; a[Konst2] = 20; END;
Unit Zwei;
uses myConst;
......
Var b : Verwende;
Procedure machwas2; BEGIN
b[Konst1]=10; b[Konst2] = 20; END;
Unit drei;
uses myConst;
......
Var c : Verwende;
Procedure machwas3; BEGIN
c[Konst1]=10; c[Konst2] = 20; END;
.... |
Das Ganze natürlich möglichst auch objektorientiert
Gruss
Moderiert von
Gausi: Delphi-Tags hinzugefügt
skall - Di 27.01.09 17:29
Danke vielmals :)
Habs jetzt einfach umgangen...
Hätte mich damit sicher noch den ganzen Tag rum geärgert xD
der organist - Di 27.01.09 17:33
Konstante heisst nun mal Konstante, weil sie konstant ist. Auch wenn der Wert vielleicht nur einmal gesetzt wird und danach nie wieder geändert wird, ist in deiner Definition doch eine variable Nummer/string/etc vorhanden.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!