
//第228页源代码

var HTML:string;
begin
HTML:='<HTML>';
HTML:=HTML+'<BODY>';
HTML:=HTML+'<H1>您看到的是一个静态HTML页面</H1>';
HTML:=HTML+'<P>这是一个ISAPI类型的动态链接库的例子。</P>'；
HTML:=HTML+'</BODY>';
HTML:=HTML+'</HTML>';
Response.Content:=HTML;
end;


//第231页源代码

var HTML:string;
begin
HTML:='<HTML>';
HTML:=HTML+'<BODY>';
HTML:=HTML+'<H1>当前的日期和时间是:</H1>';
HTML:=HTML+DateTimetostr(now);
HTML:=HTML+'</BODY>';
HTML:=HTML+'</HTML>';
Response.Content:=HTML;
end;



//第232-233页源代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Web服务器程序</title> </head>
<body bgcolor="#FFFFFF">
<h2 align="center">Web服务器程序</h2>
<h3>用户输入界面</h3>
<font size=-1><p>这个例子用来说明ISAPI动态链接库如何接收用户输入的数据,并且给出相应的响应信息。</p>
<p>请在下面的窗体中输入数据并且确认。</p>
<hr>
<p>这个窗体采用的是GET方法。</p></font>
<form action="project3.dll/parsefile" method="get">
<font size=-1><p>姓名：<input type="text" size="20" name="name"></p>
              <p>年龄：<input type="text" size="20" name="age"></p>
              <p>性别：<input type="text" size="20" name="sex"></p>
              <p><input type="submit" value="提交以上资料">
<input type="reset"></p>
</font></form>
<hr>
<font size=-1><p>这个窗体采用的是POST方法。</p>
<form action="project3.dll/parsefile" method="post">
              <p>姓名：<input type="text" size="20" name="name"></p>
              <p>年龄：<input type="text" size="20" name="age"></p>
              <p>性别：<input type="text" size="20" name="sex"></p>
              <p><input type="submit" value="提交以上资料">
<input type="reset"></p>
</form></font>
</body>
</html>




//第234页源代码

<html>
<head>
<title>谢谢您!</title>
</head>
<body bgcolor="#ffffff">
<h1 align="center">Web服务器程序对用户请求的响应信息</h1>
<h3>以下是您输入的信息</h3>
<hr>
<table border="0">
  <tr>
    <td>姓名：</td>
    <td><#name></td>
  </tr>
  <tr>
    <td>年龄：</td>
    <td><#age></td>
  </tr>
  <tr>
    <td>性别：</td>
    <td><#sex></td>
  </tr>
</table>
<h4>谢谢您的合作!</h4>
</body>
</html>



//第235页源代码

var
data:TStrings;
begin
data:=nil;
with request do
begin
case MethodType of
mtget:data:=queryfields;
mtpost:data:=ContentFields;
end;
replacetext:=data.Values(tagstring);
end;



//第238页源代码

<html>
<head>
<title>用于显示数据表</title></head>
<body>
<center>
<h1><font color="#ff0000">一个显示数据表的例子</font></h1>
</center>
<!--header.htm ends here-->


<!--note:footer.htm begins here-->
<hr>
<p>thank you</p>
</body>
</html>
<!--footer.htm ends here-->



//第239页源代码

begin
with datasettableproducer1 do
begin
caption:='<h1>数据表employee.db </h1>';
caption:alignment:=catop;
dataset.Open;
response.Content:=datasettableproducer1.content;
dataset.close;
end;
end;



//第240页源代码

select master."symbol" as symbol,
  master."rcmndation" as recommend,
  industry."ind_name" as industry
from "master.DBF"master,"industry.DBF"industry
where (master.industry=industry.ind_code)and
((master."risk"=:risk)and(master."rating"=:rate))
order by industry."ind_name"



//第240-241页源代码

begin
with querytableproducer1 do
begin
caption:='stock recommendations';
//设置表头内容
header.add('<html>');
header.add('<body>');
//设置表尾内容
footer.add('</body>');
footer.add('</html>');
//建立和Query1控件的连接
query:=query1;
query.open;
response.Content:=querytableproducer1.content;
query.Close;
end;
end;



//第241页源代码

begin
//如果取值为buy,背景色为绿色
if celldata='BUY' then bgcolor:='green'
//如果取值为sell,背景色为红色
else if celldata='SELL' then bgcolor:='red'
//如果取值为hold,背景色为白色
else if celldata='HOLD' then bgcolor:='white';
end;



//第241-242页源代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>ISAPI DLL服务器程序</title>
</head>
<body bgcolor="#ffffff">
<h1>ISAPI DLL服务器程序</h1> 
<h2>显示查询结果</h2> 
<p>这个例子讲解怎样用ISAPI DLL返回对数据表的查询结果。</p> 
<form action="project5.dll/querytable" method="post"> 
    <p>Rate:<select name="Rate" size="1"> 
        <option>A</option> 
        <option>B</option> 
        <option>C</option> 
    </select></p> 
    <p>Risk:<select name="Risk" size="1"> 
        <option>LOW</option> 
        <option>MED</option> 
        <option>HIGH</option> 
    </select></p>  
     
    <P><input type="submit"><input type="reset"></p> 
</form>
</body>
</html>



//第243页源代码

  writeln('HTTP/1.0 200 OK');
  writeln('CONTENT-TYPE:TEXT/HTML');
  writeln;
  writeln('<html><head>');
  writeln('<title>当前时间</title>');
  writeln('</head><body>');
  writeln('<h1>服务器上的当前时间为</h1>');
  writeln('<hr>');
  writeln('<h4>');
  writeln(formatdatetime('"今天的日期是" dddd,mmmm d,yyyy,'
+'"<br>当前时间是 "hh:mm:ss AM/PM',now));
  writeln('</h4>');
  writeln('<hr>');
  writeln('<i>页面由CgiDate.exe处理</i>');
  writeln('</body></html>');



//第244页源代码

<html>
<head>
<title>CGI测试网页</title>
</head>
<body>
<a href="cgidate.exe">当前时间</a>
</body>
</html>




//第245-246页源代码

<html>
<head>
<title>CGI参数传递的例子</title>
</head>
<body>
<a href="cgidate2.exe?time">显示当前时间</a><p>
<a href="cgidate2.exe?date">显示当前日期</a><p>
<a href="cgidate2.exe?both">显示当前时间和日期</a><p>
<a href="cgidate2.exe?wrong">错误参数</a><p>
<a href="cgidate2.exe">不输入参数</a><p>
</body>
</html>



//第246-247页源代码

program cgidate2;
{$APPTYPE CONSOLE}
uses
  sysutils;
begin
  writeln('HTTP/1.0 200 OK');
  writeln('CONTENT-TYPE:TEXT/HTML');
  writeln;
  writeln('<html><head>');
  writeln('<title>当前时间</title>');
  writeln('</head><body>');
  writeln('<h1>服务器上的当前时间为</h1>');
  writeln('<hr>');
  writeln('<h4>');
  if paramcount>0 then
  begin
    if paramstr(1)='time' then
    writeln(formatdatetime('"当前时间是 "hh:mm:ss AM/PM',now))
    else if paramstr(1)='date' then
    writeln(formatdatetime('"今天的日期是" dddd,mmmm d,yyyy,'now))
    else if paramstr(1)='both' then
    writeln(formatdatetime('"今天的日期是" dddd,mmmm d,yyyy,'
+'"<br>当前时间是 "hh:mm:ss AM/PM',now))
    else
    writeln('错误,无效的参数是:'+paramstr(1)+'.');
  end
 else
   writeln('<错误,没有参数.');
  writeln('</h4>');
  writeln('<hr>');
  writeln('<i>页面由CgiDate.exe处理</i>');
  writeln('</body></html>');
end.



//第251页源代码

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  with DataSetTableProducer1 do begin
    Dataset.Open;
    Response.Content := Content;
    DataSet.Close
  end;
end;



//第251页源代码

program Project1;

{$APPTYPE GUI}

uses
  WebBroker,
  CGIApp,
  Unit2 in 'Unit2.pas' {WebModule1: TWebModule};
{$R *.RES}
begin
  Application.Initialize;
  Application.CreateForm(TWebModule1, WebModule1);
  Application.Run;
end.
