Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Unsichtbarer Record
Klabautermann - Mo 16.10.06 13:31
Titel: Unsichtbarer Record
Hallo,
ich hätte da mal eine Interessensfrage, über die ich immer mal wieder Stolpere.
Es kommt häufiger mal vor, dass ich einen Record definiere, welcher nur Intern in einem meiner Objekte verwendet werden soll. NAch außenhinn ist der vollig unwichtig, wenn er als Parameter oder rückgabewert verwendet wird, dann nur im
private oder
public Bereichen. Wenn ich ihn aber dort verwenden möchte, muss er ja vor der Klassendeklaration defioniert werden, also so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| type tMyInternRecord = record zeit : tDateTime; text : string; end;
TMyClass = class(TObject) protected function GetInternData : tMyInternRecord; public end; |
Ist es möglich, den Record "im verborgenen" zu deklarieren, also so, dass er von außerhalb der Unit nicht sichtbar ist? Nicht das es schlimm oder störend währe, dass man nun auch in anderen Units den Typ verwenden kann, es ist nur einfach nicht nötig, daher Frage ich mich, ob es sich verhindern lässt.
Gruß
Klabautermann
BenBE - Mo 16.10.06 14:01
Wenn man diesen Typ direkt als Parameter oder Rückgabewert verwenden möchte, dann nicht ...
Du kannst aber jegliche Rückgabewerte als Pointer deklarieren und dann die Deklaration in den Impl-Teil verschieben ... Das macht aber mehr Nutzen als es wirklich bringt.
UGrohne - Mo 16.10.06 15:30
BenBE hat folgendes geschrieben: |
Das macht aber mehr Nutzen als es wirklich bringt. |
Oder eher: Es macht mehr Arbeit, als man dafür Zeit aufwenden muss.
Christian S. - Mo 16.10.06 16:35
Wenn er in public-Methoden als Rückgabewert dient, macht es keinen Sinn, ihn zu verbergen.
Weiterhin kennt Delphi ja leider keine Sichtbarkeit von Typen. Ab Delphi 2005 wäre daher die einzige Möglichkeit, den Record in der Klasse verschachtelt zu deklarieren mit dem Sichtbarkeitslevel, das minimal nötig ist.
Klabautermann - Mo 16.10.06 17:42
Hi,
BenBE hat folgendes geschrieben: |
Du kannst aber jegliche Rückgabewerte als Pointer deklarieren und dann die Deklaration in den Impl-Teil verschieben ... Das macht aber mehr Nutzen als es wirklich bringt. |
ja, die Pointer Idee kahm mir auch schon ist aber völlig Sinlos, da es hier ja um eine "schönheitskorrektur" geht und das nicht umbedingt schöner ist ;).
UGrohne hat folgendes geschrieben: |
BenBE hat folgendes geschrieben: | Das macht aber mehr Nutzen als es wirklich bringt. | Oder eher: Es macht mehr Arbeit, als man dafür Zeit aufwenden muss. |
Sooo voiel Arbeit macht das nicht, du weißt doch: Ich mag pointer. Man sollte die im .NET wieder einführen ;).
Christian S. hat folgendes geschrieben: |
Wenn er in public-Methoden als Rückgabewert dient, macht es keinen Sinn, ihn zu verbergen. |
Deshalb machte ich die Einschränkung in der Frage ;).
Christian S. hat folgendes geschrieben: |
Weiterhin kennt Delphi ja leider keine Sichtbarkeit von Typen. Ab Delphi 2005 wäre daher die einzige Möglichkeit, den Record in der Klasse verschachtelt zu deklarieren mit dem Sichtbarkeitslevel, das minimal nötig ist. |
Tja, aber ich noch immer meist im D7 arbeite hilft es nicht.
Naja, schade aber ich kann heute abend in der Gewissheit auf die Isomatte gehen, das es hier kein Delphi-Sprachelement gibt, welches ich übersehen habe ;).
Gruß
Klabautermann
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!