Hallo
Nein, das ist nicht mein Problem, mein Problem ist das man zum Beispeil von Interfaces nicht in Objekte zurück casten darf. Ich wünsche mir für Delphi die gleiche Interface Unterstützung wie für Java oder C#. Interessant wirds dann wenn Delphi .NET kommt.
Die Refernzählung ist an einigen Stellen auch sehr "seltsam" folgende zeile Code aus der VCL:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function TInterfaceList.Add(const Item: IInterface): Integer; begin with FList.LockList do try Result := Add(nil); IInterface(List[Result]) := Item; finally Self.FList.UnlockList; end; end; |
Die Frage die sich hier stellt ist, warum wird zuerst ein leere Eintrag erstellt und dann erst das Item hinzugefügt? Anwort weil nur dann der Compiler ein _AddRef macht. Wenn man es weiss ist es ok aber wenn man es nicht weiss... (nicht das solche Dinge ja grosse Erwähnung in der Hilfe fänden...)
Grüsse