Einzelnen Beitrag anzeigen

Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: interfaces: Ein paar grundlegende Fragen (zB. woher die

  Alt 1. Mär 2007, 17:37
Zitat von yankee:
1. Wofür ist die id (['{210AC03E-6716-49A5-8B54-34845AE4A087}']) gut? Soweit ich das sehe ist die 100% zufällig.
die GUID ist mehr oder minder zufällig berechnet, die benötigst du um z.b. mit As zu arbeiten...
Die ist vor allem auch dann wichtig, wenn du mit dem Interface auch außerhalb von deiner Anwendung arbeiten willst, ich glaub ohne GUID geht dann nichts mehr...

Zitat von yankee:
2. TIntTest =class(TInterfacedObject, IComparable) Muss ich das Objekt unbedingt von TInterfacedObject ableiten? Da wäre dann ja schon 80% der Grundidee von interfaces futsch...?! Ich will ja, dass ich meine Klasse, die ich später in der Liste mal speichere möglicherweise von was anderem ableiten.
Nein musst du nicht, du musst nur die Methoden von TInterface in deiner Klasse implementieren...
Wenn du es nicht machst, meckert Delphi...

Zitat von yankee:
3. Supports(Items[(Lo + Hi) div 2],IComparable,Mid); Am Anfang habe ich versucht das Objekt einfach zu casten (IComparable(Items[...])) aber wie ich gelesen habe funktioniert das nur in .net uind nicht in D für win32. Aber Supports funktioniert auch nicht so, wie ich gedacht hätte, denn der Aufruf wirft mir eine Access Violation. Warum? Und vorallem: Wie mache ich es richtig?
Das Problem wird sein, dass deine Objekte der Reihe nach freigegeben werden (glaub ich)...

Mit jedem neuen Methoden-Aufruf von Supports wird in Mid ein neues Interface von dem entsprechenden Objekt angefordert, und immer wenn dann Mid neu belegt wird, wird das Objekt von welchem das Interface vorher war wieder freigegeben, da der RefZähler dann jedesmal auf 0 gehen sollte...

Zumindest tip ich mal darauf...


Nie Interfaces mit Objekten mischen, sonst gibts fast immer =>

Bye Christian
Christian
  Mit Zitat antworten Zitat