Tak Thomas
Jeg skal lave et ganske almindelig COM object, som skal kunne kaldes fra
alle COM kompatible programmeringssprog.
Jeg lavede et nyt projekt "Activex Library", hvorefter jeg inkluderede
et "COM object" til mit projekt. Så lavede jeg ganske simpelt en
funktion via type library, og derefter registrerede jeg mit Activex
Server via menuen "Run".
Er der andre måder at gøre dette på? Jeg har lavet mange COM objekter i
VB og C++, nu skal jeg prøve i Delphi, men uden held.
Hvad gør jeg galt?
Adam
"Thomas Rose" skrev d. 04-10-01 10:36 dette indlæg :
> Hej Adam,
>
> "adam" <adam.news@kandu.dk> wrote in message
> news:nnUu7.1467$uQ.214283@news010.worldonline.dk...
> > Jeg har lavet et COM object i Delphi som virker fint når jeg tester
det
> > under VB, men når jeg prøver at teste det inde fra en delphi
application
> > får jeg fejlen "No such interface supported", hvad gør jeg galt?
>
> Mit første bud ville være, at du ikke har registreret .dll'en... men
hvis du
> kan teste det fra VB, men ikke fra Delphi, kunne det tyde på at du
_har_
> registeret komponenten... så jeg ledes derfor til at spørge:
>
> Hvad er det for en type komponent du har udviklet? Et der et desideret
> COM-objekt, Automation, eller hvad (der er forskel på COM og
Automation)?
>
> Hvis du har lavet et COM-objekt, kan objektet ikke benyttes fra
script-sprog
> (f.eks. ASP og VBScript), og generelt set understøtter objektet ikke
"late
> binding", som er netop hvad du forsøger i din Delphi test... derimod
burde
> du kunne importere .dll'en og få en Delphi type-library source fil for
den
> pågældende dll. Type librariet giver en definition af de interfaces,
der
> findes i dll'en...
>
> Her er et eksempel på "early binding", der anvender et "tænkt"
type-library
> for din dll:
>
> uses
> EtServices_TLB;
>
> var
> Serv : IServices; // Skulle svare til din EtServices.Services
prog-id
> begin
> Serv := CoServices.Create; // Opret et objekt der understøtter
IServices
> interfacet
>
> ShowMessage(Serv.GetName);
>
> Hvis du ikke kan undvære "late binding", eller skal objektet anvendes
i
> script-sprog, bliver du nødt til at skrive din komponent om, og ændre
typen
> til et Automation objekt...
>
> Cheers,
> Thomas
>
>
--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"