请问如何用DELPHI编写支持ASP的WEB服务器?

解决方案 »

  1.   

    建立一个Microsoft scriptControl即可;然后你在程序中实现asp 的六大对象。这里是一个例子,演示如何使用它:
    //////////// TParserEdit for Microsoft scriptControl ////////////
    // version 1.0
    // Author :s.f.
    // Date : 2004/3/25
    /////////////////////////////////////////////////////////////////unit uParserEdit;interfaceuses
      Windows,SysUtils, Variants, Classes, ComObj, StdCtrls;
    type
      TParserEdit = class(TEdit)
      private
        function getEvaluatedVariant: Variant;
      public
        property TextValue: Variant read getEvaluatedVariant;
      end;procedure Register; //这里可以注解掉,不注册为静态组件,需要动态建立
    implementationprocedure Register;                     //不注册请注解该过程
    begin
      RegisterComponents('IBSSoft', [TParserEdit]);
    end;function TParserEdit.getEvaluatedVariant: Variant;
    var
      Parser            : OleVariant;
      Tls               : TStrings;
      Code              : string;
    begin
      Code := Text;
      try
        Parser := CreateOLEObject('ScriptControl');
        try
          try
            Parser.Language := 'VbScript';
            Parser.AllowUI := TRUE;
            Result := Parser.Eval(Code);
          except
            Tls := TstringList.Create;
            try
              with Tls do
              begin
                Add('错误号:' + inttostr(Parser.Error.Number));
                Add('源:' + Parser.Error.Source);
                Add('描述:' + Parser.Error.Description);
                Add('行:' + intToStr(Parser.Error.Line) + ',列:' +
                  Inttostr(Parser.Error.Column));
                Add('代码:' + Parser.Error.Text);
                Add('帮助文件:' + Parser.Error.helpFile);
                Add('帮助主题:' + inttostr(Parser.Error.HelpContext));
              end;
              MessageBox(getforegroundwindow, pchar(Tls.Text), '执行错误',
                mb_ok or mb_IconError);
            finally
              tls.free;
            end;
          end;
        finally
          Parser := null;
        end;
      except
        MessageBox(getforegroundwindow, 'Com 对象错误', '无法解析', mb_ok or
          mb_IconError);
      end;
    end;
    end.
    /////////////测试窗体调用/////////////
    //1.注册为组件
    //2.加入该组件到form
    //3.修改ParserEdit1的text内容为 10*(1+2)+20
    //4.放个button 并编写OnClick事件
    //////////////////////////////////procedure TForm1.Button1Click(Sender: TObject);
    begin
      showmessage(String(ParserEdit1.TextValue));  //取回结果
    end;
      

  2.   

    不明白.我用INDY的HTTP SERVER,不过他不支持ASP.如何让他支持呢?
      

  3.   

    Indy可以支持CGI和ISAPI
    用IdCGIRunner组件,网上去下载了通过ISAPI调用ASP.dll能实现ASP的支持,不过具体方法知道的人不多
      

  4.   

    如何调用ASP.DLL编写支持ASP的WEB服务器啊?