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

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;

TCL H5TV:回归电视本质,与开发者共赢 烽火星空徐国龙:依托平台,坚持开放与标准,企业移动化快速研发之道 首届bong线上黑客马拉松第一阶段达成! 12支团队晋级 APSys 2014,AMD将发表基于异构体系的DNN实现与评估 PagerDuty实战分析:将MySQL迁移至XtraDB并成功运行EC2 Molecule:自食其力的免费HTML5游戏框架 智能家居升级:Nest启动开发者计划,并开放API Docker,从这里做起! 《近匠》云巴创始人张虎:低门槛云服务为小团队创造更多机会 Oculus公司同意收购Xbox 360手柄设计团队 公有云VS私有云 哪个数据更安全? 调查:开发者越老越吃香吗? Facebook在线支付:取代虚拟货币的终极边界 Google I/O前析:关于新一代设计框架Quantum Paper的猜想 Google I/O 2014前瞻:“令人发指”的Android产品线 福昕熊雨前:PDFium开源项目的背后 Dropbox无法登陆,国内企业网盘横向评测! 如果编程语言是超级英雄…… 谷歌发布Material Design设计语言 系统、功能与设计,Android L究竟新在哪儿? 《近匠》游道易副总裁孙可:发行商眼中的手游市场 布道师徐立:Docker是标准化IT结构的新方式 解读全新Google Play Games:多屏游戏时代终于来了! 设计神器PaintCode 2.1发布,完全支持Swift 一周消息树:天河二号以每秒3.3亿亿次的速度再居世界超算榜首 传闻微软计划用Lumia品牌取代Surface 【CTO俱乐部读书会】杨立东:技术团队留人“三板斧” 蓝港在线王世颖:浅谈手机游戏发行的成功基因 美国高通公司执行董事长Paul E. Jacobs:移动科技——精彩现在,辉煌未来 告别公用云,Instagram已将服务迁至Facebook数据中心 华为助力凤凰实现全媒体战略 请问谁有组卷的算法,急用,多谢! 急!!!关于FileSystemObject问题,在线等 求面积 鼠标在视图和用非模式对话框交互绘图 在.login中怎么设置汉字的位数? oracle9i的安装文件都有什么?望高之!急! 如何用window.open弹出一个屏幕居中的窗口? 大侠们,在线求word200文件密码破解,急!!!!!!!!!!! ccnet(苦海放歌) tdl982324(石井坚) ( ) wanghr100(灰豆宝宝.net) possible_Y(◎)(◎)←(这是眼镜,不要想歪了)请接分 ccnet(苦海放歌)yaoxuefeng(锋雨者)brainf(后街)请接分 配置节的type的第二个参数的含义 报表问题。 最近在找个网站管理系统,各位能否给个建议 windows2000的奇怪问题 关于如何自定义组件问题 有关windows 98自动重起问题。 ListBox问题 VFP8.0中的数组问题,高手和用过的人来看看! 数据库的移植问题? 重新开机时常常变成"大图标",怎样设置使WIN2K所有磁盘(c,d,e盘)上的所有文件夹和文件以"列表"显示,就是让"查看"->"列表"固定? oracle9i的安装文件都有什么?望高之!急! 哪位有没有SCJP培训的录音或其他教学的好东西阿 MSComm控件在设计时运行没问题,但打包后装到别的机子老是出现“没有注册类”,求救? delphi 做的数据库应用程序如何移植?? copysign怎么用啊? 如何将一个网页的所有链接均自动加为绝对链接? 技术与数学的问题 本人写了一个设置纸张方向和大小的函数,其中MyDevMode.dmPaperSize = psize '若vbPRPSA3 设置纸大小为A3,但在VB对象库中找不A2张对应值 tomcat4.1.24中的sevlet问题 我下载了linux的iso文件,可怎么安装啊!! 我想问一下,有关于计数器的相关的信息? 救急:是否可以在两个页面(两个单独打开得ie浏览器页面)传递参数,如何实现啊? JDBC相关的两个问题 Oracle8.1.6怎样连接SQL SERVER2000 ?(在线等待) inserted表问题 急!!!关于FileSystemObject问题,在线等 dll 编译问题 请教 请教关于iterator与container? 谁有mixerAPI的中文资料,如(mixerGetLineInfo)我需要弄懂原理(不需要MSDN) 请问“怎么样才能修改以有的flash文件”,拜托,在线等待 如何使相同的子窗口显示一个? ?请教高手有关Align的问题。 高手帮我谢谢注释~~高分相赠~~~~谢谢高手~~~~ 各位大牛们,小弟想请教大家对FlowMIS这个平台有多少了解,用此平台进行二次开发(企业信息系统)好不好。 SQL SERVER2000 怎样连接Oracle8.1.6(在线等待) C语言程序设计 如何在英文字符集的客户端访问服务器为中文的数据库? 那4M是不是让诺基亚给偷了?! 如何调用ResetPrinter函数设置默认打印机 listview使用的问题 delphi的打包问题 DN400排水管每小时流量DN400雨 水管每小时流量 都说吃四条腿的(牛羊猪)不如吃两条腿的(鸡鸭),两条腿的不如一条腿的(菌菇类),一条腿的不如没有腿的(鱼),那虾算哪一类? 这些年来,人们的日子越来越红火,真是_________.(歇后语) 30厘米直径的排水管平行于地面,流量是多少? 初中数学概括,越详细越好. 谚语“是金子总会发光”相近的故事是( )A.灰姑娘b.白雪公主c.丑小鸭D.海的女儿 名字沛慧是什么含义 霍乱毒素B亚单位的主要用途? 底座是三根柱子的建筑 排水管渠的流量Q=Av(V =n-1R(2/3)I(1/2) )如何计算? 核仁在核糖体亚单位前体组装中的作用是什么? 水刀切割机可以切木材吗,能切多厚,精度多少,刀路多宽.水刀切割机价格 ..某游泳池有两个排水管打开甲排水管时每小时排水70米³,需要40个小时排完;打开乙排水管时每小时某游泳池有两个排水管打开甲排水管时每小时排水70米³,需要40个小时排完;打开乙 越难越好 我才申请的 把分都给你 桃花的雄蕊有什么特点急求、、、、、 《红楼梦》中人物有几个有含义的名字(谐音)比如甄士隐 就是 真事隐 贾雨村 就是假语村言的意思 其他的就不清楚了 1.求证:对于给定的等边三角形,三角形内任意一点到三边的距离和为定值2.在∠B的两边上分别取点A,C,过A作AD⊥BC于D,过C作CE⊥AB于E,若AB≥BC,CE≥AB,那么∠B等于多少度?3.直线AB,CD交与点O,OE平分 两小儿辩斗对你有啥启发?孔子不能决也 说明啥? 小时四条腿,中年两条腿,老年三条腿!打一动物 霍乱肠毒素的组成中,表达肠毒素的作用成分 是A亚单位还是A1呢? 欧姆定律的应用题,越详细越好..1、(2007•宁波)如图,电源电压保持不变,表①、②、③是电流表或电压表,滑动变阻器R2的滑片P在中点,闭合开关S,三只电表均有示数.当滑片P向左移动时, 推荐风格与Long Shot相似的歌曲Long Shot是Kelly唱的,风格明快,求这种风格的歌曲. 朱自清在写《春》时,多处用了比喻,如写桃花、杏花、梨花,说它们“红的像火,粉的像霞,白的像雪;写…朱自清在写《春》时,多处用了比喻,如写桃花、杏花、梨花,说它们“红的像火,粉的像 适用简易程序有哪些条件? 日环食的形成dvrfscyrv6v 根基造句 界门纲目科属种的门有哪些门脊索动物门之类的, 小学课本上只有日偏食,日全食,月偏食和月全食,唯独没有日偏食.请问,日环食是怎样形成的? 朱自清在写《春》时,多处用了比喻,写桃花,杏花,梨花时 the only way i could do this was. 这里省去的是什么单词the only way i could do this was.这里省去的是什么单词作什么语先行词被什么词在从句中代替填术语 日环食是是什么?怎样形成的?最好有图的, “火”还表示桃花——,“霞”还表示杏花——,“雪”还表示梨花——. 《独立宣言》,《人权宣言》,《权利法案》的启示. 日环食是什么原理? 桃花,杏花,梨花都开了,红的像火,粉的像霞,白的像雪.这句话吧()比作(),说明花儿() ONE SHOT什么意思 “辛亥革命”的英语翻译是什么 朱自清中的《春》为什么只写“桃花、杏花、梨花”,而不写“荷花或菊花”?如果你是老师,你怎样回答这个问题? 对丁克家族的看法?我是80年后的一代,父母辈的人的观念是:结婚就应该生孩子,这是种幸福.可是我不认为是这样.也许是价值观不同吧.我认为生孩子是项弊大于利的投资.想到生孩子,我就联想 辛亥革命用英语怎么说 青蛙为什么长两条腿?而蝌蚪都有四条腿.. 这两个小孩哪个说的有道理?意思是什么!简介一点!好的话+100分!别长篇大论! 荷兰为何被称为风车的故乡 初一时钟问题 对丁克家族应持有什么态度 send的英文似嘛意思啊,! 没有四条腿的椅子叫什么?就是没有四条腿,可以在东北炕上用的.可以后依的. 核糖体大小亚基在合成蛋白质前是分开的还是在一起的 《背影》描写父亲爬月台运用的是白描的写法? 椅子为什么四条腿? spare part怎么读 杏花、桃花、梨花开花时间 凳子为什么是四条腿? android 手机spare part 里面有挂载/系统有只读和读写到底有什么用—什么区别—选择的话选择哪个呢? 描写桃花,杏花和梨花的句子描写桃花,杏花和梨花的句子,不要诗句,要段落 江苏省有没有动物卫生监督服装海南、上海都有 12month and 1% spare 这实在出口产品保修期的一种说法,我只是不明白的1%spare 分析红楼梦中小红的形象写个100字吧,求你了,别太多 我的理想 作文 写关于素描的 县级动物卫生监督检查站一个月能开多少钱 美监管机构调查房地产信托投资基金日本一杂志启用胖模特 专为胖女孩设计德国政界对美监听默克尔愤怒 欲传唤斯美媒:监听默克尔行动在奥巴马得知后便美国多名政客支持监听行为 称总统不必习近平会见南非副总统莫特兰蒂法国极右政党领导人演讲 遭乌克兰女权浙江临海户外休闲用品展开幕 欲探索跨美国多名政客支持监听行为 称总统不必韩总统好感度调查出炉 卢武铉居首李明法国极右政党领导人演讲 遭乌克兰女权澳媒称中国买家推动悉尼当地房价升高2法国极右翼领导人遭女权活动人士裸胸抗今秋首次暴风强势登陆法国 数万家庭断澳农民呼吁设“全澳产”通道为本地产品德媒:奥巴马早知默克尔遭监听 彼此难以色列耄耋作家展望巴以和平并存 遭官美一男子为取啤酒冒险重返失火房屋险些调查显示日本半数国民反对《特定秘密保男子法国海岸冲浪遭鲨鱼袭击 一条腿被日本核监督委员会敦促东电“大刀阔斧”互联网金融大热 Wecash闪银蝉联江苏省作协计划五年出百部精品江苏加大食品生产企业失信惩戒力度 九宝马为了加速度也是拼了, M5将用全两强争霸,明年原油市场波动会更多俄局势逆转,美引火烧身,到底鹿死谁手3600点得失至关重要,散户务必谨慎金鼎回顾油价35年兴衰史告诉你:油价【辩论】涉农工商资本下乡不需要盈利?遛狗遛腻了,想遛点新鲜的?来非洲遛狮内界的缄默?外界的猜测?谈谈无人机的那个唱《斑马斑马》的IU妹子,哎哟~美得不要不要的植物研究室伦纳德24+6+5泡椒14中1 马刺哈尔滨一公交车与火车相撞 事故无人员联通看哭!电信11月移动用户净增10Moto X二代迎来升级:率先吃上安马斯克达成心愿:猎鹰9火箭成功发射回小石妹的“约会”日记伊万:心态不稳,比赛中需要尽早进球沃尔科特:厄齐尔能让队友更出色
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘