说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用Delphi编写ASP的ActiveX

HTML文档下载 WORD文档下载 PDF文档下载
用Delphi编写ASP的ActiveX

ASP中的ActiveX服务器组件为标准的Automation ActiveX组件,只要使用由ASP提供的接口和遵守ASP有关规则便可。Delphi 4.0作为一种高效、快速、强大的开发语言,为开发COM组件提供了很强的功能,但不知道什么原因,很少有人运用Delphi编写ASP中的ActiveX服务器组件。本文意在通过举例介绍如何运用Delphi编写ASP中的ActiveX 组件。

通过以下步骤创建ASP中的ActiveX 服务器组件:

1.创建一个ActiveX library工程

打开Delphi编辑器,选择选单中的File/New,在New Item中选择 the ActiveX 项中的ActiveX Library选项,Delphi将自动生成以下代码:

library Project1;

uses

ComServ;

exports

DllGetClassObject

DllCanUnloadNow

DllRegisterServer

DllUnregisterServer;

{$R *.RES}

begin

end.

这是Delphi编译COM组件时必须的函数,DllGetClassObject函数负责将输入调用从COM库转换到相应的类工厂中;DllCanUnloadNow函数是通知OLE引擎如果没有程序引用将自动释放内存;DllRegisterServer与DllUnregisterServer函数用来登记COM服务器。总之Delphi已经为你做好了一切辅助工作,你只需用心编写主要功能模块便可。

2.在该工程中新增一个automation对象

选择Delphi编辑器选单中的File/New,在New Item中选择ActiveX 项中的Automation Object选项,系统将显示the Automation Object导向,在物件名称中输入TestObject和选择Multiple Instance选项

按OK键后系统将弹出类型编辑器,其实这时系统已经生成了两个单元(Project1—TLB.pas与unit1.pas),unit1.pas中有如下代码:

initialization

TAutoObjectFactory.Create(ComServer

TTestObject

Class—TestObject

ciMultiInstance);

end.

这是告诉类工厂物件执行的方式与位置。

3.增加组件中的属性与方法

在类型编辑器中单击工具栏中的方法按钮增加以下方法:

OnStartPage(unk:IUnknown)

OnEndPage.

Test.

注意在增加方法OnStartPage时,在Parameters项中增加参数unk,类型为Iunknown,增加三项方法后,在类型编辑器中按Refrash键,Unit1.pas中将会出现三个函数,在每个函数下写如下程序:

procedure Ttestobject.OnStartPage(unk: IUnknown);

begin

m_scriptContext := unk as IScriptingContext;

end;

procedure Ttestobject.OnEndPage;

begin

m_scriptContext := nil;

end;

procedure Ttestobject.test;

begin

m—scriptContext.Response.Write(′ActiveX Test For Delphi′);

end;

当IIS激活一个ActiveX组件时它会自动寻找组件中是否有OnStartPage与OnEndPage方法,如果存在,服务器将在开启本ASP页时自动执行OnStartPage方法和当本ASP页所有脚本执行完毕后自动执行OnEndPage方法。

其中mscriptContext 与IScriptingContext是ASP中负责将ASP转换成HTML格式必不可少的变量与类型,因此必须将Unit1.pas文件中的Uses加上ASPTypeLibrary—TLB变成

unit unit1;

interface

uses ComObj

ActiveX

Delphi_TLB

ASPTypeLibrary—TLB

SysUtils;

ASPTypeLibrary—TLB.Pas文件可以通过类型库引入取得,打开Delphi编辑器中的选单Project/import type library 项,选择the Microsoft Active Server Pages Type library,按OK,Delphi便会自动生成一个ASPTypeLibrary_TLB.Pas。

4.编译与注册

选择Delphi编辑器中的选单Project/Compile 项编译文件,然后选择Run/Register ActiveX Server对Project1.dll文件注册。

5.在ASP文件中运用Project1.dll

在ASP文件中加入以下文字:

Set TestASP = Server.CreateObject(Project1.TestObject)

TestASP.Test

通过上面的例子,我们可以发现用Delphi编写ASP中的ActiveX服务器组件是十分容易的,加上Delphi丰富的组件与强大的功能,使我们相信运用Delphi编写特殊的ASP服务器组件,如数据库、服务器上各种信息与资源访问等,都会十分方便。

小米手机-HAXLR8on:创客32小时全纪实 图文:看苹果下一代iPhone细节 能吸引你购买吗? [开源推荐]Intention.js:通过HTML进行响应式开发 Android副总裁Hugo Barra将加盟小米 三星将召开首届开发者大会 推新SDK和S Pen 15个步骤创立技术公司,并收获千万用户(三) H3Cloud:为企业提供最优化IaaS方案 VMware、红帽对决云管理平台 大数据辅助决策,构建智慧城市 所见即所得:四款免编程移动游戏开发引擎推荐 PaaS乱局:Container的新机遇 IDC再度下调2013年全球PC销量预期 平板电脑中枪 Waze联合创始人做FeeX 用众包方式增加银行服务透明度 Ripple CTO Stefan Thomas:Bitcoin与未来支付应用开发 第二届Coding For Fun编程马拉松实时快报→→ 数字化你的脸:14个智能眼镜开发平台 Unite2013开发者大会:Unity新增多项重磅革新 微软大中华区副总裁谢恩伟:微软云+端应用模型前瞻 移动周报:从硬件马拉松到Barra加盟,本周小米很火 小而美的Diffbot:将Web页面转化为数据库,获多位科技大佬注资 “叙利亚电子军”对美国多家网站发起“电子制裁” 麻省理工TR35之IT界年轻有为创新者(上) Linux用户须知的16款实用软件 新平台,新惊喜:记第二届Coding For Fun 创业建议泛滥成灾 实用的不多 腾讯云俱乐部北京站:知名手游商畅谈云时代开发运营策略 LG再战平板市场:将推出8.3英寸平板G Pad 编程语言与工具专题论坛:各类编程语言使用体会分享 淘宝、腾讯、豆瓣、支付宝、网易专家热议大数据分析与BI实战 “创新或灭亡”:Google的80/20只是转移视线的说辞罢了 自动化编排,配合SDN的iMC V7更加开放 请问TC3中如何产生一个1至9的随机数? 关于安装 KV 2003 失恋后的第一个中秋!散分! 才学C++的朋友,留个QQ,以便交流. 背投彩电买什么牌子/型号的好?大家出点意见 :) 中秋夜还有谁在技术版,问一个关于javascript的问题! Project 2002 快速下载 中秋,女友陪别人去了,我就来这里和大家共度佳节吧…… 现在上网真的很无耐,无耐。。。 HttpContext.Current?? 我们中秋,他们911! 一个表中,怎么写SQL使得不够5位的记录在后面自动加零补够5位! 以Post提交表单时的一个小问题 Socket可以实现这样的功能吗? 如何取消Linux 中的单用户模式 ? 怎样固定生成窗口的大小? 为什么在panel中不能响应image的onclick事件? 在CSDN过中秋节的兄弟们,来坐坐吧! 怎样关闭cformview派生的视图? 各位大虾,有谁知道怎么配置连接池呀,我以前配的,现在有点记不起来了,最好能说清楚点,谢谢!重分酬谢! 如何使位图在文档类视图中显示出来! 怎样快速获得一幅图像所用的颜色的总数? 错误号问题 如何在ie中直接打开word文件进行浏览、编辑,并保存。 一直都在接分,我也散点分。祝大家中秋快乐!!!!!! 我学应用物理,计算机该怎么自学?100+100=200 大分相送!不够再加(第1部) 有一个问题,怎么配置struts,有没有一个现成的例子呀,望指点,谢谢,也可以发到我的信箱 有CSDN上的兄弟一起过中秋节晚上,今晚不孤独,最后七十分散掉 oracle9i...数据库是提示:ORA-12154: TNS: 无法处理服务名 ? **首先祝大家中秋快乐,然后请问“包程序写入失败”是什么意思???**谢谢:-) 我学应用物理,计算机该怎么自学?100+100=200 大分相送!不够再加(第2部) 如何將數組定義在一段連續的內存空間??急急!!!!! **首先祝大家中秋快乐,然后请问“包程序写入失败”是什么意思???**谢谢:-) 我用这个函数Space$(nSize),提示说工程库没有,需要什么工程库? 两罐啤酒,独过中秋。祝这里的兄弟姐妹中秋快乐! 一个有关datareport的问题 现在有必要学ASP吗? 请教:为什么我不能给被调用包的源代码设置断点,请问是什么原因?怎么解决? 补刚才漏掉的五十分 想编写一个新邮件到达时自动通知的程序,请提供思路 关于SAX对大数据量文件的读写(高分) 中秋节编的程序是不是特别好吃? 请问:什么是“C runtime 函式庫的 Startup code”呢?? 关于自动播放的问题,在线等! 关于自动播放的问题,在线等! 请问怎么读取 text 控件 中 任意一行的内容 如何用jad?谢谢 哪儿有bc++高一点的版本下载 dbf问题 中秋了,我写了一首诗,大家看写得精彩不精彩? 我学应用物理,计算机该怎么自学?100+100=200 大分相送!不够再加(第3部) 人类文明都是源于大河附近吗? 英语书被雨淋过后,怎样恢复? 老婆为什么最近下面大了啊 书页为什么会粘到一起?写作文用的,务必在18:00之前回答! 武动乾坤冰主,吞噬之主,雷霆之主等8为主的详解求冰主,吞噬之主,黑暗之主,炎主,雷霆之主,洪荒之主,生死之主,空间之主.的详解. 我抽了个签:班蓝跳出众人警,一声哮吼定乾坤,雷轰霹雳云分散,万里江山尽皆明.请问怎么解释我抽了个签:班蓝跳出众人警,一声哮吼定乾坤,雷轰霹雳云分散,万里江山尽皆明.解曰:求官在 在1:500000的地图上,实际距离为20千米的两城市在图上的距离是A.5厘米B.4厘米C.3厘米D.2厘米 在1:500000的地图上……城市在图上的距离为多少全题:在1:500000的地图上,实地距离为20千米的两城市在图上的距离为多少?5厘米?4厘米?3厘米?还是2厘米? 在比例尺是1:500000的地图上,实地距离为20千米的一座城市图上距离是多少? 中学作文 谁是英雄写刘翔的 600字 浸过水的书 粘在一起该怎么分开且不破损书页? 杭州整治两大火车站周边非法黄牛黑车新加坡星展第三季盈利8.62亿新元 日俄防长会谈当天俄军机飞临 日战机紧萨拉热窝两有轨电车相撞 40多人受伤埃及多地爆发大规模反对军方游行【高清环球时报专访中国赴叙利亚参加化学武器会议记录爆奥巴马医改网站开通首天仅6加拿大女子相亲网站“钓男人”吃免费餐梅德韦杰夫谈监听丑闻:美国不能这样厚俄“彼得大帝”号核动力巡洋舰进入地中韩国三四流整形医生赴中国淘金 自称顶嫩模“新人王”Gigi Hadid最阿尔法猎头(第二十一期)兰尼斯特有债必偿!冰与火之歌主演加盟走心的设计,太牛了!高频交易有哪些著名算法中国企业在东非\"精雕细琢\"修铁路Facebook第一季度净利5.12从社群和大数据角度看90后警告股民注意!下周或要变盘!有图有真P2P炒房团卷土重来惊!永不断电的充电设备到底有多强?大魔法十二剑道无限变异傲世魂帝瞳古我为大神凡魔笑媒婆计划弑天神神之代行者超级英雄系统乃春庙旅游天王殿旅游石家庄市博物馆旅游碑亭旅游玉泉国际狩猎场旅游库尔滨雾凇旅游五龙沟旅游禹王庙旅游黄龙瀑旅游大坪霁雪旅游天后祖祠旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘