Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Typendeklaration über 3 Units
trm - Sa 26.05.12 14:37
Titel: Typendeklaration über 3 Units
Hallo,
meine Frage ist evtl. schon oft behandelt, aber ich habe nichts gefunden oder falsch gesucht.
In eienr Unit habe ich Typen deklariert.
In einer zweiten Unit binde ich die 1. Unit ein, um Variablen mit den Typen zu deklarieren.
In der 3. Unit wird die 2. unit eingebunden, so dass die Typenunit hier nicht bekannt ist.
Also wird ein Type nicht über mehrere Units vererbt und ich muss die 1. Unit in die 3. auch einbinden, damit der Type bekannt ist ?
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:
| type TTextAlignX = (dsLeft, dsCenter, dsRight);
TTest=record fText_horizontal: TTextAlignX; end;
uses Unit1;
type TTestClass = class private public Test1: TTest; [..]
uses Unit2;
var nocheintest:TTestClass;
nocheintest.Test1.fText_horizontal := dsLeft; |
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Sa 26.05.2012 um 17:07
jaenicke - Sa 26.05.12 15:15
Packe einfach in Unit 2:
Delphi-Quelltext
1:
| TTextAlignX = Unit1.TTextAlignX; |
Dadurch wird der Typ auch über diese Unit verfügbar gemacht.
trm - Sa 26.05.12 18:17
Und was ist der Unterschied zur uses-Einbindung ?
jaenicke - Sa 26.05.12 18:23
Der Typ kann dann ggf. nicht vom Compiler inline eingebaut werden (sprich die Optimierung ist etwas schlechter). Wenn das der Fall ist, kommt aber eine entsprechende Compilermeldung, in der auch steht, welche Unit eingebunden werden sollte. In den meisten Fällen sollte es aber keinen Unterschied machen und ich glaube das inline-Problem gibt es nur bei komplexeren Typen wie Records (denn Konstanten wie hier werden eh nur ersetzt).
trm - Sa 26.05.12 19:47
Vielen Dank :)
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!