早在03年就在蓝色理想上看到过动态Include的文章,当时已经觉得很厉害,但实际应用了一下,不方便而且Include的效果不好.

后来又在一网站上看到了改进版的,但是也不太好用~~~

哎,当时我真是觉得有点想放弃ASP了,但是由于公司还是用ASP来开发,我也是没有办法...

今天,我一定要记住今天~~~在国外的一个网站上我竟然发现了这样一个好东东,太棒了~~~Great works!!!

以前试的一些动态Include代码,都无法Include一个类,甚至函数~~~又或者Include文件中的Include无法被包含...

现在这个鬼佬(dselkirk)写的类可以为我们做到这些了~~~
复制代码 代码如下:
<% 
  public include, include_vars 
  set include = new cls_include 

  class cls_include 

    private sub class_initialize() 
      set include_vars = server.createobject("scripting.dictionary") 
    end sub 
    private sub class_deactivate() 
      arr_variables.removeall 
      set include_vars = nothing 
      set include = nothing 
    end sub 

    public default function include(byval str_path) 
      dim str_source 
      if str_path <> "" then 
        str_source = readfile(str_path) 
        if str_source <> "" then 
          processincludes str_source 
          convert2code str_source 
          formatcode str_source 
          if str_source <> "" then 
            if request.querystring("debug") = 1 then 
              response.write str_source 
              response.end 
            else 
              executeglobal str_source 
              include_vars.removeall 
            end if 
          end if 
        end if 
      end if 
    end function 

    private sub convert2code(str_source) 
      dim i, str_temp, arr_temp, int_len 
      if str_source <> "" then 
        if instr(str_source,"%" & ">") > instr(str_source,"<" & "%") then 
          str_temp = replace(str_source,"<" & "%","|%") 
          str_temp = replace(str_temp,"%" & ">","|") 
          if left(str_temp,1) = "|" then str_temp = right(str_temp,len(str_temp) - 1) 
          if right(str_temp,1) = "|" then str_temp = left(str_temp,len(str_temp) - 1) 
          arr_temp = split(str_temp,"|") 
          int_len = ubound(arr_temp) 
          if (int_len + 1) > 0 then 
            for i = 0 to int_len 
              str_temp = trim(arr_temp(i)) 
              str_temp = replace(str_temp,vbcrlf & vbcrlf,vbcrlf) 
              if left(str_temp,2) = vbcrlf then str_temp = right(str_temp,len(str_temp) - 2) 
              if right(str_temp,2) = vbcrlf then str_temp = left(str_temp,len(str_temp) - 2) 
              if left(str_temp,1) = "%" then 
                str_temp = right(str_temp,len(str_temp) - 1) 
                if left(str_temp,1) = "=" then 
                  str_temp = right(str_temp,len(str_temp) - 1) 
                  str_temp = "response.write " & str_temp 
                end if 
              else 
                if str_temp <> "" then 
                  include_vars.add i, str_temp 
                  str_temp = "response.write include_vars.item(" & i & ")"  
                end if 
              end if 
              str_temp = replace(str_temp,chr(34) & chr(34) & " & ","") 
              str_temp = replace(str_temp," & " & chr(34) & chr(34),"") 
              if right(str_temp,2) <> vbcrlf then str_temp = str_temp 
              arr_temp(i) = str_temp 
            next 
            str_source = join(arr_temp,vbcrlf) 
          end if 
        else 
          if str_source <> "" then 
            include_vars.add "var", str_source 
            str_source = "response.write include_vars.item(""var"")" 
          end if 
        end if 
      end if 
    end sub 

    private sub processincludes(str_source) 
      dim int_start, str_path, str_mid, str_temp 
      str_source = replace(str_source,"<!-- #","<!--#") 
      int_start = instr(str_source,"<!--#include") 
      str_mid = lcase(getbetween(str_source,"<!--#include","-->")) 
      do until int_start = 0 
        str_mid = lcase(getbetween(str_source,"<!--","-->")) 
        int_start = instr(str_mid,"#include") 
        if int_start >  0 then 
          str_temp = lcase(getbetween(str_mid,chr(34),chr(34))) 
          str_temp = trim(str_temp) 
          str_path = readfile(str_temp) 
          str_source = replace(str_source,"<!--" & str_mid & "-->",str_path & vbcrlf) 
        end if 
        int_start = instr(str_source,"#include") 
      loop 
    end sub 

    private sub formatcode(str_code) 
      dim i, arr_temp, int_len 
      str_code = replace(str_code,vbcrlf & vbcrlf,vbcrlf) 
      if left(str_code,2) = vbcrlf then str_code = right(str_code,len(str_code) - 2) 
      str_code = trim(str_code) 
      if instr(str_code,vbcrlf) > 0 then 
        arr_temp = split(str_code,vbcrlf) 
        for i = 0 to ubound(arr_temp) 
          arr_temp(i) = ltrim(arr_temp(i)) 
          if arr_temp(i) <> "" then arr_temp(i) = arr_temp(i) & vbcrlf 
        next 
        str_code = join(arr_temp,"") 
        arr_temp = vbnull 
      end if 
    end sub 

    private function readfile(str_path) 
      dim objfso, objfile 
      if str_path <> "" then 
        if instr(str_path,":") = 0 then str_path = server.mappath(str_path) 
        set objfso = server.createobject("scripting.filesystemobject") 
        if objfso.fileexists(str_path) then 
          set objfile = objfso.opentextfile(str_path, 1, false) 
          if err.number = 0 then 
            readfile = objfile.readall 
            objfile.close 
          end if 
          set objfile = nothing 
        end if 
        set objfso = nothing 
      end if 
    end function 

    private function getbetween(strdata, strstart, strend) 
      dim lngstart, lngend 
      lngstart = instr(strdata, strstart) + len(strstart) 
      if (lngstart <> 0) then 
        lngend = instr(lngstart, strdata, strend) 
        if (lngend <> 0) then 
          getbetween = mid(strdata, lngstart, lngend - lngstart) 
        end if 
      end if 
    end function 

  end class 
%>

广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。