首页  编辑  

用DELPHI制作留言板

Tags: /超级猛料/Web.互联网开发技术/   Date Created:

北京市融海公司

王炯

---- 现在很多朋友都有了自己的个人主页。有一个留言板主页与访问者交流一下可能是很多网友愿望。但留言板主页不同与一般主页,它不但有主页部分而且还要有数据存储功能。其实用DELPHI的CGI应用程序可以轻松的制作留言板主页。用ELPHI开发CGI应用程序不但可以实现ASP,HTML很难实现的低层操作,而且简化了CGI应用程序开发过程。

---- 1.选择Delphi的菜单File|New,在New标签中选择"Web Server Application"。

---- 然后在选择"CGI Stand-alone executable",创建一个CGI应用程序。

---- (如果想创建ISAPI或NSAPI应用程序,只需选择"ISAPI/NSAPI Dynamic Link Library",后几步操作不变。)

---- 2.系统自动创建一个非可视的WebModule1组件,我们按以下步骤给程序添加控制和代码:

---- (1)、双击WebModule1的Actions属性,弹出"Editing WebModule1.Actions"对话框;

---- (2)、单击Add按钮,添加一个新行WebActionItem1

---- (3)、单击WebActionItem1,在Object Inspector中将WebActionItem1的Default属性设置为True;这样设置使访问CGI.EXE时直接访问此页面。

---- (4)、单击Add按钮,添加一个新行WebActionItem2

---- (5)、单击WebActionItem2,在Object Inspector中将WebActionItem2的PathInfo属性设置为"\Info";即访问此页面的路径为CGI.EXE\Info。

---- (6)、在Object Inspector中双击WebActionItem1的OnAction事件,添加代码。将留言板页面的HTML语句赋给Response.Content属性,使用户访问WEB服务器应用程序时显示。

---- (7)、在Object Inspector中双击WebActionItem2的OnAction事件,添加代码处理留言板页面传回的信息,同时显示相关信息通知用户。其中涉及Request.ContentFields.Values['index']及Request.ContentFields.Strings[counts]两个属性的应用。

---- Request.ContentFields.Values['UserName']是指留言板页面中name="UserName"的控件中的数据信息。

---- Request.ContentFields.Strings[Counts]是指留言板页面传过来各项数据及对应的控件名。以Counts区分其为哪项数据,其数值为留言板页面传输数据项的顺序号。

---- 数据存储方式我采用文本文件存储,如果网友的主页人气鼎盛也可考虑改用数据库存储。

---- 以下是完整的程序代码

---- 在DELPHI3,IIS4.0/PWS,IE4.0中运行通过。

unit Html;

interface

uses

 Windows, Messages, SysUtils, Classes, HTTPApp;

type

 TWebModule1 = class(TWebModule)

   procedure WebModule1WebActionItem1Action(Sender: TObject;

     Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

   procedure WebModule1WebActionItem2Action(Sender: TObject;

     Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 WebModule1: TWebModule1;  

implementation

{$R *.DFM}

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;

 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

var html:string;

begin

 html:='';

 html:=html+'< html >< head >< title >会员注册< /title >< /head >< center >';

 html:=html+'< H2 >会员注册< /H2 >< /center >';

 html:=html+'< body background="" bgcolor="#fffff" >< td >< /td >';

 html:=html+'< form action="webcgi.exe\Info" method="post" id="form1" name="form1" style="FONT-SIZE: larger" >';

 html:=html+'< p >姓名:< input size="12" maxlength="10" name="UserName" >< /p >';

 html:=html+'< p >性别:< input type="radio" name="Sex" value="Man" checked >男';

 html:=html+'< input type="radio" name="Sex" value="Woman" >女< /p >';

 html:=html+'< p >年龄:< input size="5" maxlength="3" name="Age" >< /p >' ;

 html:=html+'< p >所在城市:< input size="20" maxlength="16" name="City" >< /p >' ;

 html:=html+'< p >Email:< input size="24" maxlength="30" name="Email" >< /p >';

 html:=html+'< p >留言:< textarea name="Textarea" rows="5" cols="30" >< /textarea >< /p >';

 html:=html+'< center >< input type="submit" Name="submit" value=" 提     交 "  >';

 html:=html+'< input type="reset" value=" 取    消"  >';

 html:=html+'< /form >< /center >';

 html:=html+'< /BODY >< /html >';

 Response.Content :=html;

end;

procedure TWebModule1.WebModule1WebActionItem2Action(Sender: TObject;

 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

var

html:string;

Output: TextFile;

Counts,line:integer;

 begin

 Assignfile(Output, 'List.Txt');{如果没有list.txt文件会报错,须先手工创建。}

 Append(output);

 for counts:=0 to Request.ContentFields.Count-2 do

  begin

    if counts< Request.ContentFields.Count-2  then

     begin

      Write(Output,  Request.ContentFields.Strings[counts]);

      for line:=0 to 20-length(Request.ContentFields.Strings[counts])  do

       begin

         Write(Output,' ');

       end;

     end

    else

     begin

      Write(Output,  Request.ContentFields.Strings[counts]);

      Writeln(Output,' ');

     end ;

   end;

 CloseFile(output);

 html:='';

 html:=html+'< html >< head >< title >Thank You!< /title >< /head >< body >';

 html:=html+'< center >< P >< H2 >'+Request.ContentFields.Values['UserName'];

 html:=html+'您好!您已注册成功!< /H2 >< /P >';

 html:=html+'< A href="http://zhou/scripts/Webcgi.exe" >点击这里返回< /A >';

 html:=html+'< /center >< /body >< /html >';

 Response.Content :=html;

end;

end.