Marco Cantù 1998, Mastering Delphi 4

Project: MYWEBSRV.DPR


Project Structure


MYWEBSRV.DPR

library MyWebSrv;

uses
  HTTPApp,
  ISAPIApp,
  WebDataModule in 'WebDataModule.pas' {WebModule1: TWebModule};

{$R *.RES}

exports
  GetExtensionVersion,
  HttpExtensionProc,
  TerminateExtension;

begin
  Application.Initialize;
  Application.CreateForm(TWebModule1, WebModule1);
  Application.Run;
end.

WEBDATAMODULE.PAS

unit WebDataModule;

interface

uses
  Windows, Messages, SysUtils, Classes, HTTPApp, Db, DBTables;

type
  TWebModule1 = class(TWebModule)
    Session1: TSession;
    Table1: TTable;
    procedure WebModule1WebActionItem1Action(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
  Str1: string;
  I: Integer;
begin
  Str1 :=
    '<HTML> <HEAD> <TITLE>Server Database</TITLE> </HEAD> ' +
    '<BODY> <H1><CENTER>Query</CENTER></H1> ';

  Str1 := Str1 + '<b>' + Request.Query + '</b><p>';

  if Request.Query <> '' then
  begin
    Table1.FindNearest ([Request.Query]);
    for I := 1 to Table1.FieldCount - 1 do
      Str1 := Str1 + (Table1.Fields [I].FieldName + ': ' +
        Table1.Fields [I].AsString + '<p>');
  end
  else
  begin
    Table1.First;
    while not Table1.EOF do
    begin
      // entire table
      Str1 := Str1 + Format (
        'The capital of <a HREF="' +
        Request.ScriptName + '?%s"> %s </a> is %s<p>',
        [Table1.FieldByName ('Name').AsString,
        Table1.FieldByName ('Name').AsString,
        Table1.FieldByName ('Capital').AsString]);
      Table1.Next;
    end;
  end;
  Response.Content := Str1 + '</BODY></HTML>';
  Handled := True;
end;

end.

WEBDATAMODULE.DFM

object WebModule1: TWebModule1
  OldCreateOrder = True
  Actions = <
    item
      Name = 'WebActionItem1'
      OnAction = WebModule1WebActionItem1Action
    end>
  Left = 195
  Top = 108
  Height = 125
  Width = 164
  object Session1: TSession
    Active = True
    SessionName = 'mysess'
    Left = 24
    Top = 8
  end
  object Table1: TTable
    Active = True
    DatabaseName = 'DBDEMOS'
    SessionName = 'mysess'
    TableName = 'COUNTRY.DB'
    Left = 64
    Top = 8
  end
end


Copyright Marco Cantù 1998