AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2 Interfaces mit gleichem property

Ein Thema von hoika · begonnen am 14. Nov 2006 · letzter Beitrag vom 14. Nov 2006
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#1

2 Interfaces mit gleichem property

  Alt 14. Nov 2006, 12:19
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 ;(


Heiko
Heiko
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#2

Re: 2 Interfaces mit gleichem property

  Alt 14. Nov 2006, 13:00
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.: IInterfaceB(KlasseA).Interval 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.

Alternativ kannst Du in der KlasseA die Get und Set Methode der Property Interval eines der Interfaces bereitstellen, und zwar mit:
procedure Schnittstelle.Schnittstellenmethode = implementierndeMethode; Wobei ich allerdings jetzt nicht genau weiss, ob das hilft, da der Compiler ja immernoch nicht weiss, welches der Beiden Interfaces Du mit KlasseA.Interval ansprechen willst.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: 2 Interfaces mit gleichem property

  Alt 14. Nov 2006, 13:12
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
Heiko
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#4

Re: 2 Interfaces mit gleichem property

  Alt 14. Nov 2006, 14:20
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.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: 2 Interfaces mit gleichem property

  Alt 14. Nov 2006, 14:52
Nein,

die Klasse ist als Form-Variable definiert.
Hinterher kommt noch etwas Code, der klappt ja.
egal, es klappt ja jetzt ! *freu*


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz