Autor Beitrag
[r2d2]
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109

WinXP
D5 Enterprise
BeitragVerfasst: Do 27.07.06 04:00 
Hallo zusammen,

ich versuche gerade, funktionierenden Delphi-Code
anhand dieser Angabe von der MS Entwicklerseite zu erstellen
(meine Kenntnisse in sachen Interfaces sind bisher recht bescheiden):

Zitat:
1. Create a data object (IDataObject) that exposes IAsyncOperation.
2. Call IAsyncOperation::SetAsyncMode (..).


Wenn ich das richtig verstanden habe wird Punkt 1 erreicht durch das Erstellen eines Objekts von folgender Klasse:
ausblenden Delphi-Quelltext
1:
2:
3:
TIDataObject_mit_IAsyncOperation = class(TComponent, IDataObject ,IAsyncOperation)
    ...
  end;


In dem Programm, in dem ich das TIDataObject_mit_IAsyncOperation Objekt verwenden will,
arbeite ich bisher nur mit einem IDataObject Objekt.
Die Methoden aus IAsyncOperation werden auch jetzt nur an einer einzigen stelle im Programm
benötigt, deshalb will ich mir einfach ein TIDataObject_mit_IAsyncOperation Objekt erstellen
und diesem den Inhalt des IDataObject zuweisen. Ist das möglich?

Gruss, Klaus
Arno Nym
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: Do 27.07.06 15:28 
Hi!
Ich glaube das ist nicht möglich. Dein IDataObject wird ja eine Basisklasse haben (TObject z.B.) und deine TIDataObject_mit_IAsyncOperation Klasse bezieht sich auf ein TComponent. Selbst wenn beides zum Zwecke der Zuweisung auf das IDataObject Interface castet also wie folgt:
ausblenden Delphi-Quelltext
1:
(myObject_with_IDataObjectInterface as IDataObject) := (myComponent_with_IDataObjectInterface_and_IAsyncOperationInterface as IDataObject);					

funktioniert das nicht. Da die Objekte generell verschieden sind. Eventuell musst du eine Copyfunktion selbst einbauen, in der Manuell die Attribute bzw. Proceduren kopiert werden.
MFG, Arno Nym
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Do 27.07.06 20:39 
Nun ja wenn du die ganzen Daten dann in deinem Objekt ...mit... brauchst, dann würde ich zwei Objekte erschafffen: Objekt1 =class(TComponent,IObjektdingsbums)

und dann: Objekt2 class(objekt1, TAsynchronous)

Diese zeite Klasse unterstützt ja dann ebenfalls das erste Interface, da es ja erbt und eine Zuweisung müsste jetzt ganz einfach über as gehen. Natürlich immer darauf achten, dass da nur mit Referenzen gespielt wird :wink: