Einzelnen Beitrag anzeigen

LaNtHaN

Registriert seit: 29. Sep 2004
Ort: Wettingen
50 Beiträge
 
Delphi 2006 Professional
 
#1

Zurück geliefertes Objekt "halten"

  Alt 2. Mär 2006, 10:26
Hallo zusammen...

Im Moment versuche ich mich an einem dll, mit welchem ich auf einem DXS-Server bestimmte Tags(Variablen) auslesen oder erstellen kann.
Beim erstellen eines neuen Tags liefert es mir Anscheinend ein Objekt zurück, welches ich halten muss, da ansonsten die erstellte Variable wieder stirbt.

Das DLL ist in etwa wie folgt aufgebaut:
DXSTAGSLib
->ITagsEvents(DispInterface)
->ITagEvents(DispInterface)
->Tags(CoClass)
->ITags(Interface)
-->Item(property)
-->CreateBool(method)
-->usw.
->Tag(CoClass)
->ITag(Interface)
-->Value(property lesen)
-->Value(property setzen)

Der Text, welcher hinter CreateBool steht sieht so aus:
Delphi-Quellcode:
[
id(0x00000001),
helpstring("method CreateBool")
]
HRESULT _stdcall CreateBool([in] VARIANT tagName, [out, retval] VARIANT * pTag );
Dies ist der Code, welcher solch ein Tag mit dem Namen "DXSTest" erstellt. Das erstellte Tag verschwindet jedoch gleich wieder.
Delphi-Quellcode:
var
  Form1: TForm1;
  dxs: Variant;

implementation

{$R *.DFM}


procedure TForm1.FormCreate(Sender: TObject);
begin
     dxs := CreateOleObject('MicroInnovation.DXS.Tags');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  dxs.CreateBool('DXSTEST');
end;
Noch ein Kommentar vom Support, welche mir jedoch nicht ganz klar macht wie ich sowas in Delphi nun lösen kann.

Zitat:
Wenn du ein CreateBool machst, kriegst du ein Objekt zurück. Das Objekt "stirbt" aber gleich wieder wenn es nicht verwendet wird. Die Annahme ist nun, dass du das Objekt nicht hälst und dieses Bool objekt somit nur sehr kurzlebig sprich im monitor schon gar nicht sichtbar ist.
Wir haben ja da im Excel diese Collection von Objekten gemacht, die ständig existierte, also die Objekte hielt und somit diese im DXS angemeldet blieben.
Weitere Frage die aufgetaucht ist:

Die CoClass Tag ist kein direkt erzeugbares Objekt.
Wie greife ich auf solch eine CoClass zu?

Der Text, welcher hinter CoClass Tag steckt:

Delphi-Quellcode:
[
  uuid(BE55C0E2-F111-4B5D-84BC-73DDCFFFE484),
  helpstring("MicroInnovation.DXS.Tag Class"),
  noncreatable
]
coclass Tag
{
  [default] interface ITag;
  [default, source] dispinterface _ITagEvents;
}
;
Vielen Dank für eure Hilfe.
  Mit Zitat antworten Zitat