Autor |
Beitrag |
skall
      
Beiträge: 38
|
Verfasst: Di 27.01.09 15:05
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?
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...
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 115
Erhaltene Danke: 22
WIN2000, XP, WIN 7 , UNIX, LINUX
Assembler für (Z8x, 68xxx,R6000,Intel), DELPHI 6 Enterprise, MAGIC eDeveloper V9+V10, C++, C#,VB, .NET, zertifizierter iBOLT-Programmierer
|
Verfasst: 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
_________________ Wo andere aufhören, fange ich erst an..
|
|
skall 
      
Beiträge: 38
|
Verfasst: Di 27.01.09 15:17
ja wie gesagt dass sind nur die relewanten Auschnitte....
|
|
skall 
      
Beiträge: 38
|
Verfasst: 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?
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 115
Erhaltene Danke: 22
WIN2000, XP, WIN 7 , UNIX, LINUX
Assembler für (Z8x, 68xxx,R6000,Intel), DELPHI 6 Enterprise, MAGIC eDeveloper V9+V10, C++, C#,VB, .NET, zertifizierter iBOLT-Programmierer
|
Verfasst: 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
_________________ Wo andere aufhören, fange ich erst an..
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 38
|
Verfasst: Di 27.01.09 15:43
Lassen Sich Konstaten überhaupt auf sowas wie "StundenListe[1]" festlegen? Weil der zickt da iwie rum...
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 27.01.09 15:58
Delphi-Quelltext 1:
| const Stundenliste: TStundenliste = (1,2,3,4,5,6,7,8,9,10,11,12); |
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
JDKDelphi
      
Beiträge: 115
Erhaltene Danke: 22
WIN2000, XP, WIN 7 , UNIX, LINUX
Assembler für (Z8x, 68xxx,R6000,Intel), DELPHI 6 Enterprise, MAGIC eDeveloper V9+V10, C++, C#,VB, .NET, zertifizierter iBOLT-Programmierer
|
Verfasst: 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:
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
_________________ Wo andere aufhören, fange ich erst an..
|
|
skall 
      
Beiträge: 38
|
Verfasst: 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
      
Beiträge: 467
Erhaltene Danke: 17
WIN 7
NQC, Basic, Delphi 2010
|
Verfasst: 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.
_________________ »Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
|
|
|