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

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;

腾讯大数据之TDW计算引擎解析——Shuffle AMD APU14 BEIJING技术创新大会精彩看点 这是云整合时代开始的节奏吗?Rackspace考虑退出 一周热点:如何使用15美元每月的机器实现百万文档检索 黑客获取数据信息的目的和进攻手段及应对之策 Surface Pro 3遭大曝光:799$起、四色可选、12寸屏幕 当软件遇上设计,浅谈敏捷UX VS.精益UX DIY“物联网”——自己动手处理传感器数据 AMD成首家X86+ARM双架构计算 欲寻新蓝海 锤子手机发布:Smartisan T1与其背后的开发团队 第六届中国云计算大会在北京隆重举行 替代笔记本的Surface Pro 3:800g、9.1mm,极致轻薄 PWorld2014:畅谈企业软件向“大平台”+“微应用”变革 微软公司全球资深副总裁张亚勤:云计算引领互联网物理化 亚马逊网络服务全球市场副总裁Ariel Kelman:亚马逊AWS云服务推动创新 终超苹果,谷歌成全球最有价值品牌 高通业务拓展总监沈周全:以软件为基础建立差异化优势 设计你所需要的,而不是你想要的 疯狂谷歌建广告天网:电冰箱、汽车仪表盘、恒温器、眼镜和手表 开发者眼中的编程语言…… 寻下一突破口?黑莓推Project Ion项目,正式进军物联网 无人驾驶汽车真的要来了:飞思卡尔研制视觉芯片 支持物联网开发! Qt发布5.3版与嵌入式企业版 5月23日:Java已经19岁啦! Google发布Dart1.4版本,新增Observatory工具 《近匠》Mixtile:跑在盒子中的嵌入式平台 从研发、平台化到营销:移动时代,汽车厂商如何升级? CTO俱乐部“云计算创新与实践”沙龙:云计算的发展趋势与那些“坑” 一周消息树:大型网站系统与Java中间件 良心推荐:6款基于云的移动应用开发工具 Google Project Tango第二弹:可生成3D图像的平板电脑 急救:主板CMOS故障!! 有谁知道在JBuilder中插入一副图片应该用哪个Compoent 加急问题??关于.properties!!在线等, Win2K下控制台程序处于选定状态,如何恢复? 窗口自动关闭 救命啊!严重问题!怎么老是显示E2316:TempSongList::PlayFirstSong()is not a member of 'TempSongList'? 关一个小笨蛋生存的困惑,还请各位GG、JJ一定要帮帮忙呀~~~~ Interface中添加方法的问题,请高手指教!再线讨论!! c#访问FOXPOR数据库问题 WORD求源代码加分之四 怎么样获得一个 EDIT 的 句柄 ?? 请问嵌入网页中的Activex如何调整自身的大小?请各位高手帮忙!谢谢! Oracle和SQLSERVER中5用户10用户到底是什么意思? 我身边的一个PLMM说,她想找一个成熟、幽默、聪明的程序员。 一个局域网内访问odbc数据源的问题 对女孩子不能太热情了! 一个easy 的question 请精通C#与VB.net的大虾帮忙翻译一下 在异地拷贝一个文件(200M以上)到本地,如何做 《C++程序语言》(特别版)怎么样 getContentPane()是什么意思? 高手请进!嵌入网页中的Activex如何获取加载它的浏览器对象?谢谢! i am 24 year old ,but i have nothing 请问哪里有exchange2000 server??? XP,IE 6 SP1,安装JRE 1.4无数次,<APPLET>标签下的东西仍不能看,<OBJECT>可以,为什么??!!求救!! Socket发送接收的问题! c++ builder6的盘 mapx 问题? partition magic 8.0 一个既包含静态图象又包含视频播放的视频,怎样把它抓屏下来??? SOS!!!一个有关全文检索,以及文档的数据库存储的问题,急急!各位大侠出招啊,在线等候 请问如何在程序中将CEdit控件设为只读或取消只读, Java认证问题 请问你们认为哪种操作系统更好用和稳定? 关于mfc dll wizard 做出来的dll 的内存泄漏问题!! vc++与C++Builder有何本质的区别? 能否做个象Media Play的ACTIVEX查件,既有动画窗口,又有按钮??? 高手,关于数据库转换的问题 给分:谁有关于“从网卡取得数据”方面的论文 大家好,有一个关于拔号、专线系统的IP地址问题 SAX的问题 表单传递后,如何判断用户是否填入了内容的? 请教 请教各位大侠 各位好,小弟初学Oracle,请各位指点哪有相关电子书下载,多谢! 辞职,不知是对是错?(第一次散分,请版主高台贵手) 关于vb在com编程的几个问题! 请教如何用C#取网卡MAC的地址?? 那位大侠做过数据加密解密的程序呀! 询问一个关于组件安装的问题 Windows2000网上邻居里没有任何东西 染色质的四级结构为什么是染色单体而不是染色体? 能量的定义是什么?既然E=mc^2,那么是不是物质可以完全转化为能量而消失?物质转化为能量,那组成物质的分子,原子,原子核,电子跑到哪里去了呢? 物质的第五态、第六态是什么样的? 染色体,染色质,姐妹染色体,姐妹染色单体的图各是怎样的?染色体,染色质,姐妹染色体,姐妹染色单体的图,要清晰的,最好是比例相同的,一目了然的,我脑子不好使.不然早会了!如果把染色体看作 税收对市场经济的作用税收对社会主义市场经济发展的作用 石墨烯什么时候才能普及使用?用在手机上什么时候能够实现?据说可以把手机做到很薄 染色体,染色质,染色单体有什么区别啊那染色单体与姐妹染色体有什么区别啊 物体的静止能量是E=mc^2.它包括物体的内能吗?为什么? 高性能石墨烯动力电池什么时候能量产? 请问:苍耳靠什么传播种子?豌豆靠什么传播种子?还有什么靠什么传播种子? 请问;铜氨溶液分别和乙醇钠,葡萄糖,溴水发生反应吗 如果能 那反应方程式是什么 简单商品经济条件下,使经济危机具有形式上的可能性的货币职能是?A,价值尺度 B 流通手段 C 贮藏手段 D 支付手段 E 世界货币答案是BD.谁知道原因,麻烦解释下吧. 太阳对地球引力做负功是什么? 把固体二氧化锰,和一种白色的粉末B混合产生氧气 计算反物质湮灭的能量能用E=mc^2吗? 在一定温度和压强下,50mlA2气体与75mlB2气体化合生成50ml气体化合物,则该化合物化学式为物质的量那块怎么求的 如右图,烧瓶内充满NH3,橡皮塞上没有胶头滴管,如何引发喷泉? 飞亚达石英手表G270怎样,求评论? 物态除了气态液态和固态,还有什么物态? 税收三性中是强制性决定无偿性,还是无偿性决定强制性?具体表述如下 税收的强制性决定税收的无偿性,而税收三性中是强制性决定无偿性,还是无偿性决定强制性?具体表述如下税收的强制性 如果所有物质都有溶解度的话,那么爱的溶解度是多少 关于地震中救命三角的问题现在网上一直都在说什么地震中救命三角的方法,不知道是真是假,希望有人能站出来说说?因为这篇文章后面写了一个自治磁铁测地震的方法,这个方法很假很假有点 飞亚达表芯动男表瑞士自动机械机芯手表 GA8466BBB用的甚么机芯 高一化学2跪求解析.石墨有没有自由移动的电子 导电性不知道怎么判断 为什么人类会受地球引力控制? 飞亚达石英表防水30米是指什么意思 物质的第六态是辐射场态还是费米子凝聚态?请具体点 胶体中加电解质、加热、搅拌,为什么会聚沉?要原因? E=mc^2 能量我不明白把物体质量带进公式得到一个超级大的能量有什么作用?这些能量能做什么? 制备细胞膜为什么不用原核细胞 胶体聚沉中加电解质是化学反应胶体粒子会吸附离子是化学反应吗? E=mc^2当E为运动时的能量时当E为运动时的能量时m是运动质量还是静止质量 飞亚达和天梭哪个品牌更好呢?同等价位谁更好些啊?听说飞亚达的机芯都是进口的,还不怎么好.天梭本身就是瑞士产的.请懂行的给详细说说.哪个更好些呢?哪款比较经典呢,价位在四千左右的 栾树有几种呢?种植栾树将来的发展趋势如何? E=mc^2的能量可以是任何能量吗? 飞亚达手表好还是天梭手表好?RT,飞亚达手表好还是天梭手表好.. 哪里有栾树哪里有栾树苗 E=mc^2 能量岂不是很大?金由235 这个代入公式没问题 这个我不怀疑毕竟他弄死了很多人 但是其他材料 我就怀疑了 比如木头 代入这个公式 我自己也觉得很可笑 有谁帮我解答这个难题我没懂你 天梭 飞亚达哪个好 【松子】松子的营养价值高在哪里 光的能量是E=mc^2还是E=1/2mc^2根据爱因斯坦质能方程,物质的能量应该是E=mc^2,但是光子不是没有静止质量的吗?那是不是不能通过质量来求得其能量?而且根据经典力学理论,Ek=1/2mv^2,那光速是c,它 天梭、依波、天王、飞亚达.相对来说哪个品牌的表好一些? 氯化铁溶液中是否存在少量氢氧化铁和氢氧化亚铁沉淀 钠在空气中的变化写一下方程式 24小时什么时候开始啊新季的 地震的生命三角区有哪些位置? 15.已知a和b相距20个图距单位,从杂交后代测得的重组值为19%,则两基因间的双交换值为:A.0.5% B.1% C.2% D.4%怎么算的没分了 7*24小时是多少时间 与鬼针草、苍耳传播方式相同一个果实有四个种子的植物. a基因的片段与b基因的片段发生互换属于什么变异 从4点过24小时是几点啊 政治理论常识有哪些具体的内容? 杂合体AbC/aBc与abc/abc测交,后代双交换型为aabbC_和A_B_cc,则其连锁基因顺序为答案是B为什么啊 怎样设置时间24小时制 实验室中硫酸亚铁或氯化亚铁溶液长时间放置将会有什么变化 下列各项中不属于税收作用的是( ).A.实现国家职能 B.稳定经济 C.收入再分配 D.配置资源作用4个财政收入的主要形式调节国民经济的重要手段维护国家政权保障国际社会的国家利益我想选的是 蒸馏高锰酸钾溶液会留下来吗? 高一寒假课程导学73页:氨气的喷泉实验探究操作中:为什么先挤压胶头滴管的胶头,后打开止水夹更好?氨气的喷泉实验成功的关键有(1)装置的气密性良好,为什么?如果不好,有啥影响?如果 如何检验基因在染色体上呈线性排列?A基因分离B基因交换.选哪个? 东京名古屋和大阪有什么好玩的地方?求推荐 俄罗斯富豪赠女友奢华电子香烟 镶24南非一警察开枪打死津巴布韦外交官黑白简约揭幕多伦多2014春季时装周法政府严打剥削实习生现象 重申实习期以开放促改革:中国的特区美秘密窃听法公民惹怒法总统 法紧急召美国财政僵局刚解 共和党就医改法案再英14岁少年被控5次性侵 3宗案件发分析:美国就业数据疲弱 美联储料谨慎德社民党同意正式谈判 协议达成或需4本网记者乘坐加总理专机赴北极:近距离联合国负责人称叙政府充分合作 销毁化日法庭审判过程遭偷拍 视频上至网络引澳维州建筑工抱怨外国劳工抢饭碗批工会伊朗强硬派质疑伊核谈判中本国代表让步美妇人陪审时哺乳幼儿被法官以藐视法庭伦敦中国城抗议“歧视性”搜捕黑工举行俄车臣地区今年击毙27名武装分子 包美国财政僵局刚解 共和党就医改法案再分析:美国就业数据疲弱 美联储料谨慎德社民党同意正式谈判 协议达成或需4failed: 一觉醒来 菜摊烧没了failed: 炎症误诊为性病,小夫贴身医药箱配进失独家庭长沙爱心款拨付四川雅安failed: 大学新生报到,送与不主体活动由11项缩为6项“司机叔叔,请停车等候”小事故锁车走人 致隧道内大堵车数十件绣品大多找到买主“八条禁止”严刹不正之风抓住机会赶种玉米电力井爆炸 砖块飞起4米高袁隆平倡建“国际稻都”泡桐树倾斜 吓坏行人两小时解决难题上十个上海自贸区或设三层管理架构中石油新获昆仑银行200亿贷款 贷款投机转会源于“拜金”被控“通敌”韩国会议员被捕9月中旬计划停电雨来方觉夏已远
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘