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

Internet编程技巧-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
Internet编程技巧-Delphi资料

在Delphi中调用NetscapeNavigator。

随着Internet的火爆,有没有想过在你的Delphi程序中启动Netscape浏览器,显示出你指定的WWW地址的主页。下面这个程序能够完成这一功能。

programNetscape;

usesDDEMan;

procedureGotoURL(sURL:string);

var

dde:TDDEClientConv;

begin

dde:ΚTDDEClientConv.Create(nil);

withddedo

begin

//specifythelocationofnetscape.exe

ServiceApplication:Κ′c:ιns32ιprogramιnetscape.exe′;

//activatetheNetscapeNavigator

SetLink(′Netscape′,′WWW—Activate′);

RequestData(′0xFFFFFFFF′);

//gotothespecifiedURL

SetLink(′Netscape′,′WWW—OpenURL′);

RequestData(sURL+′,,0xFFFFFFFF,0x3,,,′);

CloseLink;

end;

dde.Free;

end;

begin

GotoURL(′http://www.yahoo.com/′);

end.

Delphi开发Web Server程序响应用户的输入

随着Internet/Intranet的飞速发展和普遍应用,对在Internet/Intranet上的应用程序的需求越来越多,于是Java和ActiveX Form应运而生,但是,现在Internet的带宽还非常低下的情况下,这种基于Client端的应用是非常困难的,下载一个非常小、功能非常简单的Java Applet就需要非常长的时间,而且还存在着用户使用浏览器不支持这种新技术的可能。在这种情况下,基于服务器的CGI,Win-CGI,ISAPI/NSAPI还是一种主要的方式。使用Delphi 3开发Web Server程序是非常简单的,Delphi 3中提供了大量的元件和对象,支持Web Server程序的开发。

在Delphi 3的Demos中提供了简单的Web Server程序开发的例程,本文主要集中在此例程中没有涉及到的响应用户输入的问题。

HTML中用户输入主要是 例如(查询某人的电话号码):

姓名:

在这个例子中使用了POST方法。那么在Web Server应用程序中,如何得知用户的输入信息呢?

在HTTP协议中,客户端向Web Server应用程序返回数据主要是通过URL和CONTENT部分。例如URL中:http://www.delphi.com.cn/dfyw/cgi-bin/delinfo.exe?id=10,这里,id=10数据参数,告诉delinfo.exe显示从ID=10开始的信息,这一般应用在数据量较少的情况下,优点是比较容易输入参数,缺点是数据量不能太大,并影响URL的显示。在CONTENT中保存数据信息的优点是不影响URL的显示,而且数据量较大,缺点是用户只能使用 除了POST方法使用CONTENT部分返回数据以外,其它方法都是通过URL来返回数据的。

Delphi中有TWebRequest对象,这个对象将HTTP返回的信息进行分析,非常容易使用。对于CONTENT中的数据,TWebRequest使用ContentFields,将数据分析成为一个TStrings,可以直接使用Request.ContentFields.Values['name']来都取数据。而URL中的数据,TWebRequest使用QueryFields,也将数据分析成为了一个TStrings,可以直接使用Request.QueryFields.Values['name']来读取数据。

例如上面的HTML返回的消息处理:

if Request.ContentFields.Values['name']<’’ then

Response.Content:= Request.ContentFields.Values['name']

+’的电话号码是:’+QueryTelCode(Request.ContentFields.Values['name'])

else

Response.Content:=’请输入用户名’;

Delphi 3中Cookie的建立使用:

Cookies是一种Web服务器在客户端存储和返回信息的机制

这种简单的、永久的和基于客户端的状态信息大大的扩充了基于Web的客户/服务器(Client/Server)应用程序的能力。因此广泛应用在大量的实际中,例如所有订阅Microsoft公司的MSDN的用户、访问过Borland Online的用户,以及访问过我的主页(http://www.nease.net/~borland)的用户都会在本地存储Cookie,以便下次访问时提供上次访问的记录。

Delphi 3是Borland公司1997年推出的可视化、面向对象的高效率的快速应用程序开发工具(RAD),提供了大量的最新功能,例如开发COM/DCOM,一步开发ActiveX对象,多层数据库应用程序MIDAS等,并且使用Delphi 3开发基于Web服务器的程序,如ISAPI/NSAPI,Win-CGI,CGI程序都十分方便。

使用Delphi 3开发Web Server程序是非常简单,方便的,因为在Delphi中提供了Web Module、TWebApplication、TWebRequest、TWebResponse、TPageProducer等大量的对象供使用.对于Cookie

Delphi3也提供了大量的程序供使用

如TWebResponse.Cookies,TWebResponse.SetCookieField,TWebRequest.Cookie,TWebRequest.CookieFields,TWebRequest.ExtractCookieFields等,应该是非常方便。但本人为了实现一功能需要设置Cookie,但是发现使用Delphi提供的SetCookieFields设置不成功,经研究Delphi 3所带的HttpApp.Pas和IsapiApp.Pas文件发现在中文Windows 95和NT环境下该程序有错误。

根据Netscape公司的规定

Cookie的格式应为:

Set-Cookie: Name=Value; expires=DATA; Path=PATH; domain=DOMAIN_NAME; secure

而且根据规定

日期(DATA)的设置必须满足格式“Wdy

DD-Mon-YYYY HH:MM:SS GMT”

基于RFC822

RFC850

RFC1036和RFC1123等规定,但是检查HTTPAPP.PAS中的function TCookie.GetHeaderValue: string中为FormatDateTime('"expires="' + DateFormat + ' "GMT; "'

Expires);

其中const DateFormat = 'ddd

dd mmm yyyy hh:mm:ss'

此程序在英文环境中产生的格式是正确的

但是在中文中产生的结果却不对

因为星期和月份都将按照中文的表示方法:如将11月生产“十一月”中文串,这样在Netscape Navigator和Microsoft Internet Explorer就不能辨认了。

既然错误在于原VCL未考虑中文环境的问题,所以修改的方法有:1、修改VCL源程序,编译后将dcu文件拷贝到Lib目录,这样会完全改正错误,这样是最根本的解决方法,但是如果将源程序放在另一未修改的Delphi中(例如提供源程序给别人和自己重新安装)编译又将出现问题。2、因为使用并不太多,所以可以将修改的程序放在自己的程序中,使用Delphi 3提供的TWebResponse.SetCustomHeader设置

这样的好处是将程序放在自己的程序内,重新装Delphi或在另一台计算机上编译的结果也会完全正确。因为Cookie的目的一般有两种,一种是在此会话过程中使用,过后不使用,此时不需要Expires段,不会产生时间错误,可以使用Delphi 3提供的所有Cookie程序;另一种为永久保存,时间一般越长越好,于是可以将时间设置为2099年二月22日

于是程序中设置Cookie的方法为:

Response.SetCustomHeader('Set-Cookie'

'Name=Value; expires=Sun

22 Feb 2099 08:08:08 GMT'); (注斜体用自己的名称代替,例如设置Count=10,则Name用Count代替,Value用10代替),这样就可以建立Cookie了.

以下为建立一个访问计数器的程序,可以参照:

const

LastIp:String='0:0:0:0'; //避免重复计数

Var

S:String;

Count:Integer;

begin

S:=Request.CookieFields.Values['count'];

if S<'' then begin

try

Count:=StrToInt(S);

Except

Count:=0;

End;

end else Count:=0;

if LastIp LastIp:=Request.RemoteAddr;

Response.SetCustomHeader('Set-Cookie'

'count='+IntToStr(Count)+'; expires=Sun

21 Feb 2010 08:08:08 GMT');

Response.Content:='您是第'+IntToStr(Count)+'来到本页!';

End;

【CTO讲堂】支付接入开发的陷阱有多深? 程序员界“香饽饽”、大神级别人物集体亮相——SDCC 2015编程语言专场议题曝光 【CTO沙龙】CDN在共享经济下的创新应用 深入浅出Fetch API 带你入解应用场景及适用问题 SDCC 2015讲师专访精彩集锦(二):途牛网、饿了么、快的等大牛都来了 百度、饿了么、美团专家齐聚SDCC2015,剖析前端开发核心技术 【SDCC讲师专访】百度乔刚:前端可视化难点分析及探索实践 【CTO讲堂】Growth Hacking背后,数据分析平台的架构调整 BAT、巨杉、南大、柏睿等齐聚SDCC—新一代数据库专场议题曝光! 《近匠》BeeCloud创始人黄君贤:三行代码集成支付的技术实现 【SDCC讲师专访】AdMaster技术副总裁卢亿雷:分布式数据库挑战与分析 tvOS真的代表了应用的未来吗? 使用Fetch API和ES6生成器构建异步API Android应用性能优化实践 华云数据:OpenStack的技术践行之路 【SDCC讲师专访】腾讯潘安群:腾讯云金融级数据库TDSQL分析 高颜值、高品质——安全技术论坛议题曝光! 移动应用开发者正饱受折磨 在Android平台上加载本地库的危险性 《近匠》程序员客栈,程序员背后的经纪人 【CTO讲堂】浅析工业级物联网项目的快速开发 云适配陈本峰:平台型企业级浏览器是未来办公移动化的核心 警报:XcodeGhost已扩散至第三方框架 我们眼中的应用另一端是什么? 【SDCC讲师专访】百度马如悦:不写代码的架构师不是好架构师 企业级应用避免臃肿混乱的6大黄金法则 SDCC 2015讲师专访精彩集锦:程序员界“香饽饽”、大神级人物都在! 从技术经理的角度算一算,如何可以多快好省的做个App(一) 【SDCC讲师专访】Java泛型作者Gilad Bracha:优秀的程序员应该未雨绸缪 【CTO讲堂】微服务架构在云端的应用 SDCC 2015创业项目路演火爆征集:寻找中国好项目 请问谁能为COM的CComXXX的原理和使用方法写篇文章啊。。 男人不如猫的十三条理由[转] 如何让浏览器(ie)弹出来就是最大化的? 如何用BCB进行TIMAGE的底层操作? 如何增加三层分布式系统的用户数? 请帮帮我~ 关于网络打印的问题?????????急急急 有windows1内有datawindow1有command1如何单击选择没有打开的datawindows2 VB,DELPHI 哪个对网络图形编程支持更好 有上海的公司需要人吗? VB,DELPHI 哪个对网络图形编程支持更好 调查:大家喜欢第三方控件吗? session 问题 如何在lotus中利用JAVA进行写代理,或哪里有较好的相关资料!如有好的帮助,定当另外再给分 虚拟现实,网络哪一个更有前途? 关于注册表 关于网络打印的问题?????????急急急 奇怪的现象。。 初学者问的基本的问题请大家指教 那里有编写ActiveX DLL网页的教程~ Unix或者Dos下怎么知道键盘有键被按下? 大家好 一个有意思的小任务,诚征实现程序 关于网络打印的问题?????????急急急 请问深圳IT行业人员薪资水平 请问谁知道那有关于售票系统方面的软件可以DOWN! windows2kserver 里的“本地策略”不能用? 我的2000因为WMI不能用了,谁能帮我,快!我在这等 灌水灌得差点忘了问问题~进来的有分。 一个有意思的小任务,诚征实现程序 我的2000因为WMI不能用了,谁能帮我,快!我在这等: 一个有意思的小任务,诚征实现程序 那位仁兄用过 installation system 请告诉我怎样设置才能使我的应用程序出现在“开始”菜单里 小弟急用 韩国队崛起大揭密:铁血作风 军人模式 地狱训练 vb中怎么动态生成按钮??? 请问:考中程怎样去复习,尤其是下午的题? java 的环境配置,请高手指教! 如何判断一个1024的int数组的所有元素的值全部小于50。寻求高速算法。 有谁看过Charles Petzold的《Programming Microsoft Windows with C# 》和Jeffrey Richter的《Applied Microsoft.NET Framework Programm 如何把图标加到 dll 文件中! 求助!!!哪儿能下载到VB高级编程的详细参考资料? 如何得到光标在编辑框中的位置?一个笨笨的问题 请教select函数用法!!!!! 关于日期计算的的错误!请关注!! 韩国人踢进八强 和 中国人相互掐架(转帖) vb中怎么动态生成按钮 如何修改Internet option/home page中的address CSDN如何上传文件啊? 请教c++的问题 滴水之恩,涌泉相报!!! REALPLAY不出声音 帮忙写几个字的形近字,然后组词1.然 2.泣 3.砚 4.锤 5.焚 6.乾 7.碎 8.痕 9.纵 10.祭 11.磨就这几个字的形近字,记住要给形近字组词哦!谢谢啦 这个字的形近字并组词要2个 一种冰箱,如果降价10%出售,可获利274元,如果降价20%出售,就亏本186元.这种冰箱的原价是多少元?写算式将一个底面半径为10厘米,高9厘米的圆锥体铁块寂寞才的底面积471平方厘米,深20厘米的长方 形近字组词(20组),有多少写多少 下列词语中每组各有俩个错别字,找出来并改正(1)负盖 徘徊 柳恕 一蹴而就 ——改为—— ——改为——(2 )伶仃 可鄙 琵缩 换然一新 ——改为—— ——改为——(3) 对奕 繁杂 奇攴斜 RMB 20元 HK$ 25元 这样的写法正确么? 写形近字,再组词 英语作文..五句话 假设你叫李华,你的美国笔友Peter知道你准备参加“快乐海南四日游”后发电子邮件打算和你同行.请根据以下海报信息给Peter回一封电子邮件,介绍有关旅游所的情况.中国祥 Wealth ,Success or Love 你会怎么选择?今天我们上外语课,学了这篇课文,现在我觉得在这三个当中,Wealth ,Success or Love 让我来选择,会是选不全面的,现在的你们,你们会怎么的选择勒... 三年级作文父母对我的爱2010年5月6日做完 英语作文假定你是李华,你准备给已回国的澳大利亚籍教师peter写封邮件 寻找身边的吴邵萍 征文 小丽买了一本九折出售的故事书,比原价便宜4元,这本故事书原价是( )元. 小强第一天读了一本书的8/1,第二天读了剩下的7/2,还剩下35页,这本书共多少页? 除了寻找身边的吴邵萍老师还有什么征文, 塑怎么组词 小强第一天看了一本书的3分之1,第二天看了剩下的2分之1.你会比较小强这两天看书的多少吗? 关于世界因( )而精彩的作文 塑可以组什么词 写妈妈的作文500字(真人真事)记叙文,不能写信! 我的世界如此美妙作文 塑组词3个 请给我一篇以‘老师’为主题的作文,要求600字以上,写生活中的真人真事 自由与纪律哪个重要?要求选其中一样!告诉我具体一些,我要很多~·我要论据论点论证过程很完善的~好的话(我豁出去了)我满意追加100分! 一本故事书原价20元 现在每本按原价打九折出售 现价多少元? 20组形近字(不组词) 听完自由与纪律辩论的感受是什么?刚听完辩论不知道怎么写感受啊,谁能教教我啊!有要求1000字以上! 假设你叫李华,下面一篇海报是你校英语角的一次活动安排.请根据海报内容用英语写一封电子邮件,邀请你的海报内容:欢迎到英语角来看电影 汤姆叔叔的小屋 时间 6月30日下午3点30至5点30 地 找出这些字的形近字,各2个,并组词, 自由与纪律哪个更重要攻辩 . 假设你是李华,你校与美国一所友好学校决定通过网络开展跨文化交流活动,请你用英语写一封邮件与美方联系,谈谈自己的设想,征求对方意见,交流内容要点如下:自我介绍;饮食文化差异; 王刚看一本书,第一天了18页,第二天看了全书的8分之1,还剩45页没看,这本书多少页?数方学王刚看一本书,第一天了18页,第二天看了全书的8分之1,还剩45页没看,这本书多少页?数方学法,不 下面是某商场2010年12月营业员销售电冰箱的情况统计表销售台数:3 8 10 11 12 13 30人数 :1 3 11 5 5 2 1如果商场规定12月份销售9台才算完成任务,则该商场12月份有几个员工没有完成销售任务? John即将外出旅行,请你根据提示用英语给他写封电子邮件向他介绍你对旅行的看法并提醒他旅行注意事项一、旅游是一种非常好的活动,当你累了或有空的时候到外地走走,欣赏美景呼吸新鲜空 假如你是李华,你的美国网友Peter正在学习汉语,并用汉语给你写了一封电子邮件,介绍自己的学习情况.请 某商场营业员2009年6月电冰箱销售情况统计表.销售台数3 8 10 11 12 13 30人数 1 3 11 5 5 2 1一、销售台数这组数据的平均数、中位数和众数各是多少? 甲乙二人共同加工一批零件,9小时完成任务.完成任务时乙正好加工了零件总数的5分之2,乙每小时加工16个.那么这批零件一共多少个? 怎么写 寻找身边的吴老师作文如何写?是写类似于她的老师还是写她的事迹? 令我感动的一件事500字(平常发生的) 老师对我说:“你妈妈今天没空来接你,我送你回家吧!”改为是转述句怎么改 英语旅游计划咋写!急需! 甲,乙两人合作完成350个零件,甲单独做8小时后,甲,乙再合作2小时可完成任务.甲每小时比乙多做2个,求甲,乙每小时各做多少个? 我想问下,三万元写成小写应该怎么写?30,000元吗?比较正式点的写法……写成30,000元对吗?逗号用不用要? 《让精神世界更美好》作文,都能写一些什么内容? 一项工程,甲单独做要20天,乙要24天,丙要30天.甲先做5天后剩下的三队一起做,全工程劳动报酬是6000元,求甲队应得多少元 今天老师给孩子出了几道题让把:“妈妈用手”:“明明用手”:“我们的手可以”把句子补充完整有谁知道, 让精神世界更美好 600字作文 快快快 假设你是李华,请你以email的形式向你的笔友john讲述你和你朋友的一次周末到凤凰古城旅行的经.具体内容如下表 一项任务,甲队要20天完,乙队要24天完成,丙队要30天,剩下的合做完成.报酬是6000元,甲队得报酬多少元 致妈妈的一封信600字 老师变态今天写 英语作文题目假如你是刘梅你的美国朋友John要来天津学习一年请给他写一封电子邮件介绍天津天气情况急明早 有关中秋节的作文10000字 大学英语作文:对婚姻的看法越多越好,感激不尽! 用一个诗句来形容朋友之间不舍的感情 中秋节作文10000字 一本书第一天读了40页,第二天读了80%,第二天读的是全书的八分之一.这本书共多少页? 写朋友间真挚感情的诗句 中秋节作文,10000字开头:守护者一行人到中国的时候,正好是中秋佳节. 甲种商品售价:1500元 盈利:25% 乙种商品售价:1500元 但亏损:25% 商家是盈利还是亏本?若盈利,盈利了多少?若亏本,亏本了多少?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘