![]() |
2 Interfaces mit gleichem property
Hallo #,
ich habe hier eine fremde Klasse A, die 2 Interfaces implementiert, und zwar werden die über implements an andere interne Klassen B und C weitergeleitet. das property Interval Cardinal existiert in beiden Interfaces und somit auch in den beiden Klassen. Ein KlasseA.Interval führt aber zum Compilerfehler ( Interval not found). Das macht man denn da in diesem Fall ? Die Klasse ist übrigens jclSchedule (aus JEDI), jaja, da hänge ich immer noch ;( :wall: Heiko |
Re: 2 Interfaces mit gleichem property
Ist ja klar, da Deine KlasseA die Property Interval nicht selber bereitstellt, weiß der Compiler nicht, welches der beiden Interfaces Du ansprechen willst.
Abhilfe schafft der Cast Deiner Instanz der KlasseA auf eine der Beiden Schnttstellen, je nachdem welche Du gerade ansprechen willst. z.B.:
Delphi-Quellcode:
Da die Kallse A das InterfaceB hat, sind die beiden Typen zuweisungskompatibel und durch den Cast hilfst Du dem Compiler, die richtige Methode zu finden.
IInterfaceB(KlasseA).Interval
Alternativ kannst Du in der KlasseA die Get und Set Methode der Property Interval eines der Interfaces bereitstellen, und zwar mit:
Delphi-Quellcode:
Wobei ich allerdings jetzt nicht genau weiss, ob das hilft, da der Compiler ja immernoch nicht weiss, welches der Beiden Interfaces Du mit
procedure Schnittstelle.Schnittstellenmethode = implementierndeMethode;
Delphi-Quellcode:
ansprechen willst.
KlasseA.Interval
|
Re: 2 Interfaces mit gleichem property
Hallo,
der TypeCast erzeugt eine Schutzverletzung an einer anderen Stelle (SetStart) der Klasse A. Ich habe das jetzt etwa so gelöst, indem ich das property Intervall in Klasse A noch mal definiert habe, und in der setter-Methode einer der Klassen-Interval property anspreche. Ist aber trotzdem eigenartig. Das dumme ist, der Programmierer hat 5 (die 6. ist das KlasseA) interfaces für verschiedene Kalender (Tag, Tag+Intervall, Woche, Monat, Jahr), hat aber für Tag und Tag+Intervall keine Unterscheidung, welcher Typ es denn nun ist. Interval bei Tag heisst Tag ab Startdatum Interval bei Tag+Intervall sind aber die Stunden innerhalb des Tages. Ich bin schon dauf und dran, dass wirklich selber zu coden ;( Heiko |
Re: 2 Interfaces mit gleichem property
Tja Je Selber, desto Lerneffekt.
Das mit der Schutzverletzung kommt warscheinlich daher, dass Du das Ding als Klasseninstanz angelegt hast. Interfaces zählen grundsätzlich die Referenzen mit, das funktioniert aber nur, wenn Du die Klasse über das Interface instanzierst, sonst wird nach dem Konstruktor gleich wieder weggeschmissen. |
Re: 2 Interfaces mit gleichem property
Nein,
die Klasse ist als Form-Variable definiert. Hinterher kommt noch etwas Code, der klappt ja. egal, es klappt ja jetzt ! *freu* :cheers: Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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