你做成WebService,或者是OCX然后在ASP中调用。

解决方案 »

  1.   

    也可以做成Dll,不过,不管是dll还是楼上的ocx(一种Activex),都需要开放执行功能。
      

  2.   

    to:Eastunfail(恶鱼杀手) 
       itperson(阿尔博信:从此为大家回答问题
    如何做成:webservice 或ocx 或dll
      

  3.   

    太长了,在DELPHIBBS上找的,你看看吧,贴一文章:
    Delphi开发用于ASP的OLE Automation Server
    孙以义, 杜鹃华东师范大学,200062, 上海[email protected]一、前言ASP (Active Server Page)是微软公司的产品,作为其Web服务器的扩充,实现服务器端的脚本控制,它的优点是直接能嵌入HTML文档,相对于CGI方式,编程和测试均很方便。在一些文章中已经有所介绍。ASP本身是解释执行的,很难对系统作深层次的控制,但是ASP的最大特点是对OLE Automation的支持,这样使得它几乎获得了无限的可扩展性,例如配合微软的ADO (ActiveX Data Objects) 就能连接数据库,作数据处理和封装处理逻辑,以开发Web数据库应用系统。ASP产品本身带有了用VB/VC开发OLE Automation Server的实例,但是除了用VB或者VC++来开发OLE Automation Server以供ASP网页使用,Inprise公司的Borland Delphi 3 / 4 对OLE Automation Server也有着很好支持,某种程度上讲,用Delphi开发OLE Automation Server的方便程度超过了使用VC++的ATL。所以本文要介绍的是用Borland Delphi开发配合ASP 使用的OLE Automation Server的方法。 二、ASP示例说明为了能清晰地说明这个技术方法,本文例举了一个实际例子。调用OLE Automation Server的ASP文件(Test.asp)如下:<html><head><title> Delphi开发OLE Automation Server的试验</title></head><body>下面一行字是由Delphi开发的OLE Automation Server输出的<hr><% set DelphiObj = Server.CreateObject("MyServer.TestObj")                 DelphiObj.WriteHelloWorld                 Response.Write "<br> <hr>"set DelphiObj = nothing%></body></html>这个ASP网页将创建一OLE Automation 对象,然后调用它的一个过程,在网页中输出一些文字,此OLE Automation 对象用Delphi开发,以下详细介绍开发方法。三、OLE Automation Server的建立过程1、创建ActiveX库(ActiveX Library)Borland Delphi 3 / 4中有ActiveX Library的模板,启动Delphi,选择菜单 File | New,会出现“New Item”对话框(图1),在“ActiveX”页中选择“Library”,Delphi会自动创建一个新的DLL Project,其源代码如下:library Project1;uses ComServ;exports  DllGetClassObject,  DllCanUnloadNow,  DllRegisterServer,  DllUnregisterServer;{$R *.RES}beginend. 
    (图1)
    2、创建Automation对象(Automation Object)接下来可以使用Borland Delphi 3 / 4中Automation Object Wizard创建Automation对象,仍然选择菜单 File | New,在“New Item”对话框的“ActiveX”页中选择“Automation Object”,然后在“Automation Object Wizard”中输入Class Name为TestObj(图2) 。 (图2)
    创建Automation对象时Delphi同时会生成类库,类库就是它们是外部程序可以调用的Automation对象的属性(property)和方法(method)的定义。在本例中定义了方法procedure  WriteHelloWorld;       这个WriteHelloWorld的作用是让ASP调用,在网页中输出演示性文字用的定义好之后,按“Refresh”,Delphi自动生成代码框架。
    unit Unit1;interfaceuses  ComObj, ActiveX, Project1_TLB;type  TTestObj = class(TAutoObject, ITestObj)  protected    procedure WriteHelloWorld; safecall;  end;implementationuses ComServ;procedure TTestObj.WriteHelloWorld;begin
    end;initialization  TAutoObjectFactory.Create(ComServer, TTestObj, Class_TestObj, ciMultiInstance);end.
    框架中Delphi自动继承了TautoObject并包含我们定义的ItestObj接口(ItestObj则是从Idispatch继承下来),并且Delphi已经为我们生成了代码的输入点。编辑过程中,如果类库编辑窗口被关闭了,以后可以选择菜单View | Type Library来打开类库编辑窗口。最后保存文件为uTestObj.pas,保存新的Project为MyServer.dpr。
    3、编译和注册OLE Automation Server选择菜单 Project | Compile,即能编译生成MyServer.dll,这个DLL要在网页中起作用,还需放置到具有执行属性的目录(例如 /scripts),并注册后才能使用,注册方法是使用regsvr32.exe,命令行: regsvr32 MyServer.dll,NT4中regsvr32.exe 往往在\winnt\system32\目录中,Windows95/98中regsvr32.exe 往往在\windows\system\目录中。四、引入ASP的类库       上述过程解释了用Delphi创建一个通用的OLE Automation In-Process Server的过程,ASP页面已经可以用set DelphiObj = Server.CreateObject("MyServer.TestObj")来创建对象,但是该对象尚未能在网页中输出任何信息。如何在ASP页面中输出文字呢?这还需要引入ASP的类库,使得ASP中的对象能在Delphi程序中调用。方法是选择菜单 Project | Import Type Library,出现“对话框”,选择“Microsoft Active Server Pages Object Library” (图3),Delphi自动翻译ASP注册类库为Object Pascal 语法的说明ASPTypeLibrary_TLB.pas,这样就可以象一般的Delphi VCL一样方便地调用ASP中的注册对象了,它们是Application, Server, Session, Request and Response.
     (图3)
    其中Response就是ASP中可以输出文字的对象,要在网页中输出文字,我们只需如下修改:1)    用类库编辑器为ItestObj,增加方法OnStartPage(MyScriptingContext: IUnknown);2)    为TtestObj增加私有变量FScriptCtx: IScriptingContext;3)    如下修改WriteHelloWorld和OnStartPage过程的代码。4)    在uses 中加入ASPTypeLibrary_TLB; 最后uTestObj.pas变成为:unit uTestObj;interfaceuses ComObj, ActiveX, MyServer_TLB, ASPTypeLibrary_TLB;type  TTestObj = class(TAutoObject, ITestObj)  private       FScriptCtx: IScriptingContext;  protected    procedure WriteHelloWorld; safecall;    procedure OnStartPage(MyScriptingContext: IUnknown); safecall;  end;implementationuses ComServ;procedure TTestObj.WriteHelloWorld;begin         FScriptCtx.Response.Write('Hello World ! <br>');end;procedure TTestObj.OnStartPage(MyScriptingContext: IUnknown);begin     FScriptCtx:=MyScriptingContext as IScriptingContext;end;initialization  TAutoObjectFactory.Create(ComServer, TTestObj, Class_TestObj, ciMultiInstance);end. 存盘并编译出新的MyServer.DLL,试验载入Test.asp,就会出现入图的页面(图4)。 
    (图4)        五、结语       本文展示了用Borland Delphi快速方便地开发出能供ASP网页调用的OLE Automation Server的方法。虽然上文仅演示了Response及其write功能,其他几个对象如Application, Server, Session, Request等使用的方法是相同的,例如Request.Cookie来设置网页的个性化参数等等,本文介绍的例子可以作为一个通用模板,作为用Delphi开发具有更加复杂功能的OLE Automation Server起点。
      

  4.   

    呵呵,你们理解错了
      解释是对的,不过实现方法是用delphi写asp对象,然后在webserver的asp脚本中调用这个对象来执行
      而xianxiliu (林桤) 的意思是如何实现直接在delphi编写的web程序中直接实现asp脚本解释执行,如在ISAPI的dll页面程序中直接添加asp脚本部分来执行   VB中可以引用asp的对象,然后定义一个实例,就可以直接在vb写的isapi中调用asp对象,并写它的语句
       在delphi中我引用了,用Import library type 导入,也可以建那六大对象实例,但编译不通过,说初始化错译,
      郁闷了:(
      

  5.   

    通过菜单 File | new |Other 打开New Items窗口1。在new页中选中“Dll Wizard”即可进行Dll的创建
    2。在ActiveX页中选中“ActiveX Form”即可进行OCX的创建
      

  6.   

    itperson,你的1是制作普通DLL程序,2是制作基于web页面的activex窗体,虽然很有趣,但并不是属于我们探讨得话题,也即你离题了
      目前网上的资料多是如funboy88(司令)贴的那类,即用asp脚本页面调用delphi开发的asp object对象,来实现一些页面输出。
      我们探讨得话题是:如何在制作一个ISAPI的页面程序中直接使用asp语言,明白了吗??各位
      :(虽然我也没找到妥善的方法