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