Avatar billede carstensm Nybegynder
16. februar 2003 - 15:41 Der er 6 kommentarer

Delphi ASP component med flere interfaces

Jeg har lavet en ASP komponent i Delphi, og nu vil jeg gerne kunne tilbyde flere interfaces til det denne komponents metoder.

Komponenten er lavet i Delphi 6 som et Active Server Object.

Hvordan kan jeg tilbyde flere interfaces, og hvordan bruger jeg det på en ASP-side?

MVH
Carsten
Avatar billede dkn Nybegynder
16. februar 2003 - 19:57 #1
Du skal bruge Regsvr32.exe til at registrer dine dll'er med. Problemet er så bare at dette kan du kun komme til hvis du har din egen server. Men det kan selvfølgelig også lade sig gøre på en remote server, ihvertefald hvis den har cgi/isapi aktiveret.

Du kan så lave et cgi program, som så registrer dine dll'er på serveren.

function TWebModule1.RegOcxDll(filename: string): boolean;
var
  OCXHand: THandle;
  RegFunc: TDllRegisterServer;
begin
  OCXHand := LoadLibrary(pchar(filename));

  RegFunc := GetProcAddress(OCXHand, 'DllRegisterServer');

  if RegFunc <> 0 then
    Result := false else result := true;

  FreeLibrary(OCXHand);
end;

function TWebModule1.UnRegOcxDll(filename: string): boolean;
var
  OCXHand: THandle;
  RegFunc: TDllRegisterServer;
begin
  OCXHand := LoadLibrary(pchar(filename));

  RegFunc := GetProcAddress(OCXHand, 'DllUnregisterServer');

  if RegFunc <> 0 then
    Result := false else result := true;

  FreeLibrary(OCXHand);
end;


Dette kan dog nok give dig problemer med server admin...
Men det er den eneste måde, ellers skal du til at spørge om de vil registrer den for dig.

Kan ikke forstå dit spørgsmål med interfaces? når du bruger type lib editoren er det da ligetil.

Er ikke sikker med mener da også at der er et par demos med delphi.
Avatar billede carstensm Nybegynder
16. februar 2003 - 20:04 #2
Jeg kan godt finde ud af at registrere dll'en. Jeg kan også godt lave flere interfaces til objektet, men fra ASP kan jeg umiddelbart kun bruge default interface, og altså ikke de ekstra interfaces der er på objektet.

Hvordan kan jeg fra ASP bruge andre interfaces end det der er default?
Avatar billede dkn Nybegynder
16. februar 2003 - 20:33 #3
ok du klikker jo bare på "New Interface" oprettet de procedure og functioner der nu skal være.

i asp koden kalder du dem jo så bare:

Set ASPObj = Server.CreateObject("test.ET")
...
...
Set ASPObj = Server.CreateObject("test.TO")
Avatar billede carstensm Nybegynder
16. februar 2003 - 21:05 #4
Hvilket desværre giver:
Server object error 'ASP 0177 : 800401f3'
Server.CreateObject Failed
/ThirdObject.asp, line 8
Invalid class string

Jeg ville mene at jeg skulle skrive noget lignende:
Set ASPObj = Server.CreateObject("test.mitobjekt.ET")
...
...
Set ASPObj = Server.CreateObject("test.mitobjekt.TO")

Men det virker heller ikke
Avatar billede dkn Nybegynder
16. februar 2003 - 21:49 #5
du skal jo skrive det der passer med det object du har lavet. test skal være navnet på dit coclass og efter . skal du skrive dit interface navn
Avatar billede carstensm Nybegynder
17. februar 2003 - 09:02 #6
Det lader til at jeg i ASP'en skal skrive:
  Server.CreateObject("LIBRARY.COCLASS")
=  Server.CreateObject("Project1.ThirdObject")
ThirdObject implementerer 2 interfaces: "et" (default) og "to", men dem kan jeg ikke bruge i Server.CreateObject uden at få fejl ("Invalid class string"). Derfor har jeg kun metoderne fra "et" til rådighed.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester