Einzelnen Beitrag anzeigen

angelika81

Registriert seit: 8. Apr 2008
12 Beiträge
 
Delphi 2007 Professional
 
#1

AddObject mit einem Interface?

  Alt 8. Apr 2008, 21:05
Hallo!

Ich habe folgendes Problem:
Bei einer Combobox möchte ich ein paar Einträge hinzufügen, außerdem zu jedem Eintrag ein Objekt abspeichern.
Dies mache ich mit der AddObject-Methode der Combobox, dabei übergebe ich den Typ des Interfaces, welches das Objekt implementiert.

Also:
Delphi-Quellcode:
procedure Eintragen(Objekt: IMyInterface);
begin
  cmbTest.AddObject('Test', Objekt);
end;
Wenn ich das Objekt hinterher wieder herausholen möchte, bekomme ich aber eine AccessViolation:
Delphi-Quellcode:
var
  obj: TObject;
begin
  obj := cmbDatenbank.Items.Objects[cmbDatenbank.ItemIndex];
  if Supports(obj, IMyInterface, dbcs) then <----- Hier scheppert es...!
      dbcs.DoSomething;
end;
Ich schätze, es ist nicht sauber, ein Interface per AddObject zu hinterlegen, weil bei Interfaces der Speicher anders verwaltet wird, richtig?
Was kann ich denn tun? Was haltet ihr davon, wenn ich eine Klasse mache, die das Interface in einer Variablen (sozusagen eine Wrapperklasse) speichert und diese Klasse dann per AddObject in der Combobox speichere?

Ich freue mich auf ein paar Tipps!
Danke, Angelika
  Mit Zitat antworten Zitat