![]() |
Lokale Typdefinitionen wo?
Hallo,
ich finde für folgendes Problem keine gescheite Lösung, vielleicht stehe ich nur auf der Leitung, oder vielleicht geht es ganz einfach nicht: Ich würde gerne in einer Unit einen Record-Typ deklarieren, der nur in dieser Unit bekannt sein sollte. Normalerweise würde ich die Definition einfach in den Implementation-Bereich stellen. Aber ich brauche diesen Record-Typ als private-Variable einer Klasse, die im Interface-Bereich deklariert ist. |
AW: Lokale Typdefinitionen wo?
Unterhalb von
Delphi-Quellcode:
Implementation
|
AW: Lokale Typdefinitionen wo?
vll. geht es den Typen im Interface Abschnitt forward zu deklarieren?
|
AW: Lokale Typdefinitionen wo?
Hallo,
du kannst die Record-Definition entweder in eine eigene Unit auslagern oder den Record innerhalb deiner Klasse definieren:
Delphi-Quellcode:
Gruß Hawkeye
type
TYourType = class private type TYourRecord = record ... end; public ... end; |
AW: Lokale Typdefinitionen wo?
@BenjaminH
Forward geht meines Wissens für record Deklarationen nicht, nur für Prozeduren und Funktionen. Wie sollte das syntaktisch aussehen? @Hawkeye219 Wenn ich die record-Definition in eine eigene Unit auslagere, ist sie erst recht überall zugänglich, dann kann ich sie gleich im Interface Abschnitt dieser Unit lassen. Es ist ja kein grossen Unglück, ich hätte den record eben lieber unveröffentlicht gelassen. Wenn ich den record innerhalb der Klasse deklariere, steht er nur in der Klasse zur Verfügung. Ich brauche ihn aber noch mehrmals in der Unit ausserhalb der Klasse. |
AW: Lokale Typdefinitionen wo?
Er meint für die Klasse. diese im Interface als forward deklarieren und dann im Implementation implementieren
|
AW: Lokale Typdefinitionen wo?
Zitat:
Noch ein Tipp: packe nicht zu viel Code in eine Unit ( ![]() Gruß Hawkeye |
AW: Lokale Typdefinitionen wo?
Zitat:
Delphi-Quellcode:
(Delphi 2009)
type
TYourType = class private type TYourRecord = record a: Integer; end; end; TType2 = class procedure X(A: TYourType.TYourRecord); end; implementation procedure TType2.X(A: TYourType.TYourRecord); begin end; procedure Y(A: TYourType.TYourRecord); begin end; |
AW: Lokale Typdefinitionen wo?
Ich habe ja gewusst, dass ich noch etwas brauchen werde, um in der ganzen OOP Geschichte wirklich sattelfest zu werden - Delphi ist eben doch um einige Grössenordnungen komplexer als das gute alte Turbo Pascal, mit dem ich mich in den vergangenen 30 Jahren beschäftigt habe. Natürlich, so muss es gehen. Danke
|
AW: Lokale Typdefinitionen wo?
Die OOP ala Turbo Pascal war halt schon etwas speziell
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz