Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi COM Einbinden (https://www.delphipraxis.net/45446-com-einbinden.html)

sandrocm 6. Mai 2005 14:39


COM Einbinden
 
Hi ich bin ein bischen unerfahrenmit COM und .NET Framework....

Ich habe ein COM Tool als Typenbiblothek installiert und jetzt als Symbol inmeinerActive X Leiste.... Dashabeich runtergezogen.....

In der uses stehtjetzt die .pas aufdiees sichreferenziert: HMO_IMT_Businesslayer_TLB

Jetzt habeichdas Objekt als variabel deklariert : i_oData
Ich kann auch jetzt wennich i_oData eintippe und einen Punkt mache die Liste sehen was das Objekt soalles drinnen hat z.B. i_oData.BirthDay

Also habe das jetzt mal getestet mit einemStringgrid um die Objekte zu laden, es kompiliertauchohneprobleme abersobald ich auf den Knopf drücke, gibt er mir einenLaufzeitfehler.... also klicke mache ichhaltepunkt und sehe das das i_oData Objekt nil ist. Wennichaber i_oData.create eingebenwill, sagt ermir das diese Funktion nichtexoistiert...

Muss ich COM Objekt bzw ActiveX Objekt irgendwie besonder über Dispatch einbinden? Es gibt eine Instance in dem Objekt die heisst TData (hier als l_ioData init) und die hat create.... aber nicht die Felder wie iData.....

Delphi-Quellcode:
procedure Tfrmhmo.Button1Click(Sender: TObject);
var s,s2,s3:string;
    ist,i:integer;
    l_oBusiness:IBusiness;
    l_oData:tData;
    i_oData:iData;
    Obj:tobject;
    //df:iii;
begin

//l_oData:=tdata.create;

i_oData.BirthDay:=strtodate(stringgrid1.cells[1,1]);
  i_oData.BMI:=strtofloat(stringgrid1.cells[1,2]);
  l_oBusiness.Analyse(i_oData);

end;
Danke für die Hilfe

[edit=Sharky]Delphi-Tags gesetzt und Doppelposting gelöscht. Mfg, Sharky[/edit]

Bernhard Geyer 6. Mai 2005 14:51

Re: COM Einbinden
 
In der TLB gibt es Funktionen die mit CoCreate... anfangen.
Hierrüber werden die Objekte angelegt. (Vermutlich gibt es CoCreateBusiness).

sandrocm 6. Mai 2005 15:07

Re: COM Einbinden
 
Ja da gibt es ein

HMO_IMT_Businesslayer_TLB.CoData(TObject), aber

wennichda jetzt i_oData eingebe funzt dasimmer nochnicht???

Bernhard Geyer 6. Mai 2005 15:16

Re: COM Einbinden
 
Zitat:

Zitat von sandrocm
Ja da gibt es ein

HMO_IMT_Businesslayer_TLB.CoData(TObject), aber

wennichda jetzt i_oData eingebe funzt dasimmer nochnicht???

Was hast du genau gemacht (Beispielcode)?

sandrocm 6. Mai 2005 15:20

Re: COM Einbinden
 
Ich habe es mal mit

i_oData:=HMO_IMT_Businesslayer_TLB.CoData(tobject) ;

aber dannkommt eine FehlermeldungdasdieTypen iData und coData nichtmiteinander kompatibel wären????

Meine beidenObjekteauf derForm sind TData und die sind auf autoconnect... ichbekomme nur dieses blöde iData nicht created????

Was muss man denn da machen??

Bernhard Geyer 6. Mai 2005 15:39

Re: COM Einbinden
 
Delphi-Quellcode:
  i_oData := HMO_IMT_Businesslayer_TLB.CoData.Create;

sandrocm 6. Mai 2005 15:44

Re: COM Einbinden
 
Habe ich probiert
i_oData:=HMO_IMT_Businesslayer_TLB.CoData.create;

Jetzt kommtdie Fehlermeldung inkompatible Datentypen iData und _Data

????

Memo 6. Mai 2005 16:59

Re: COM Einbinden
 
Such in deiner TLB mal nach:
Delphi-Quellcode:
CoNamedeinerClass = class
Da müsste denn sowas drinstehen:
Delphi-Quellcode:
class function Create: Classdieerzeugtwird ;
Wenn du das findest poste mal den Teil.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz