成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當前位置:首頁>>軟件教程>>新聞內容  
ASP中令人震撼的Debug類(VBScript)
作者:asilas(翻譯) 發布時間:2003-12-17 11:22:23 | 【字體:

譯者的話:

不知道用ASP寫代碼的朋友是不是和我有一樣的感受,ASP中最頭疼的就是調試程序的時候不方便,我想可能很多朋友都會用這樣的方法“response.write ”,然后輸出相關的語句來看看是否正確。前幾天寫了一個千行的頁面,里面大概有七八個SUB/FUNCTION,調試的時候用了有三十幾個response.write ,天,調試完后把這三十個一個個刪除,累!

今天看到一個ASP中的Debug類(VBS),試用了一下,絕!

使用方法很簡單:

test.asp

<!--#INCLUDE FILE="debuggingConsole.asp"-->
<%
output="XXXX"
Set debugstr = New debuggingConsole
    debugstr.Enabled = true
    debugstr.Print "參數output的值", output
    '……
    debugstr.draw
Set debugstr = Nothing
%>

===================================================

debuggingConsole.asp

<%
Class debuggingConsole

 private dbg_Enabled
 private dbg_Show
 private dbg_RequestTime
 private dbg_FinishTime
 private dbg_Data
 private dbg_DB_Data
 private dbg_AllVars
 private dbg_Show_default
 private DivSets(2)
   
 'Construktor => set the default values
 Private Sub Class_Initialize()
  dbg_RequestTime = Now()
  dbg_AllVars = false
  Set dbg_Data = Server.CreateObject("Scripting.Dictionary")
  DivSets(0) = "<TR><TD style='cursor:hand;' onclick=""javascript:if (document.getElementById('data#sectname#').style.display=='none'){document.getElementById('data#sectname#').style.display='block';}else{document.getElementById('data#sectname#').style.display='none';}""><DIV id=sect#sectname# style=""font-weight:bold;cursor:hand;background:#7EA5D7;color:white;padding-left:4;padding-right:4;padding-bottom:2;"">|#title#|  <DIV id=data#sectname# style=""cursor:text;display:none;background:#FFFFFF;padding-left:8;"" onclick=""window.event.cancelBubble = true;"">|#data#|  </DIV>|</DIV>|"
  DivSets(1) = "<TR><TD><DIV id=sect#sectname# style=""font-weight:bold;cursor:hand;background:#7EA5D7;color:white;padding-left:4;padding-right:4;padding-bottom:2;"" onclick=""javascript:if (document.getElementById('data#sectname#').style.display=='none'){document.getElementById('data#sectname#').style.display='block';}else{document.getElementById('data#sectname#').style.display='none';}"">|#title#|  <DIV id=data#sectname# style=""cursor:text;display:block;background:#FFFFFF;padding-left:8;"" onclick=""window.event.cancelBubble = true;"">|#data#|  </DIV>|</DIV>|"
  DivSets(2) = "<TR><TD><DIV id=sect#sectname# style=""background:#7EA5D7;color:lightsteelblue;padding-left:4;padding-right:4;padding-bottom:2;"">|#title#|  <DIV id=data#sectname# style=""display:none;background:lightsteelblue;padding-left:8"">|#data#|  </DIV>|</DIV>|"
  dbg_Show_default = "0,0,0,0,0,0,0,0,0,0,0"
 End Sub
 
 Public Property Let Enabled(bNewValue) ''[bool] Sets "enabled" to true or false
  dbg_Enabled = bNewValue
 End Property
 Public Property Get Enabled ''[bool] Gets the "enabled" value
  Enabled = dbg_Enabled
 End Property
 
 Public Property Let Show(bNewValue) ''[string] Sets the debugging panel. Where each digit in the string represents a debug information pane in order (11 of them). 1=open, 0=closed
  dbg_Show = bNewValue
 End Property
 Public Property Get Show ''[string] Gets the debugging panel.
  Show = dbg_Show
 End Property
 
 Public Property Let AllVars(bNewValue) ''[bool] Sets wheather all variables will be displayed or not. true/false
  dbg_AllVars = bNewValue
 End Property
 Public Property Get AllVars ''[bool] Gets if all variables will be displayed.
  AllVars = dbg_AllVars
 End Property
 
 '******************************************************************************************************************
 ''@SDESCRIPTION: Adds a variable to the debug-informations.
 ''@PARAM:   - label [string]: Description of the variable
 ''@PARAM:   - output [variable]: The variable itself
 '******************************************************************************************************************
 Public Sub Print(label, output)
  If dbg_Enabled Then
   if err.number > 0 then
    call dbg_Data.Add(ValidLabel(label), "!!! Error: " & err.number & " " &  err.Description)
    err.Clear
   else
    uniqueID = ValidLabel(label)
    response.write uniqueID
    call dbg_Data.Add(uniqueID, output)
   end if
  End If
 End Sub
   
 '******************************************************************************************************************
 '* ValidLabel
 '******************************************************************************************************************
 Private Function ValidLabel(byval label)
  dim i, lbl
  i = 0
  lbl = label
  do
   if not dbg_Data.Exists(lbl) then exit do
   i = i + 1
   lbl = label & "(" & i & ")"
  loop until i = i
  
  ValidLabel = lbl
 End Function
  
 '******************************************************************************************************************
 '* PrintCookiesInfo
 '******************************************************************************************************************
 Private Sub PrintCookiesInfo(byval DivSetNo)
  dim tbl, cookie, key, tmp
  For Each cookie in Request.Cookies
   If Not Request.Cookies(cookie).HasKeys Then
    tbl = AddRow(tbl, cookie, Request.Cookies(cookie))   
   Else
    For Each key in Request.Cookies(cookie)
     tbl = AddRow(tbl, cookie & "(" & key & ")", Request.Cookies(cookie)(key))   
    Next
   End If
  Next
  
  tbl = MakeTable(tbl)
  if Request.Cookies.count <= 0 then DivSetNo = 2
  tmp = replace(replace(replace(DivSets(DivSetNo),"#sectname#","COOKIES"),"#title#","COOKIES"),"#data#",tbl)
  Response.Write replace(tmp,"|", vbcrlf)
 end sub
   
 '******************************************************************************************************************
 '* PrintSummaryInfo
 '******************************************************************************************************************
 Private Sub PrintSummaryInfo(byval DivSetNo)
  dim tmp, tbl
  tbl = AddRow(tbl, "Time of Request",dbg_RequestTime)
  tbl = AddRow(tbl, "Elapsed Time",DateDiff("s", dbg_RequestTime, dbg_FinishTime) & " seconds")
  tbl = AddRow(tbl, "Request Type",Request.ServerVariables("REQUEST_METHOD"))
  tbl = AddRow(tbl, "Status Code",Response.Status)
  tbl = AddRow(tbl, "Script Engine",ScriptEngine & " " & ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion & "." & ScriptEngineBuildVersion)
  tbl = MakeTable(tbl)
  tmp = replace(replace(replace(DivSets(DivSetNo),"#sectname#","SUMMARY"),"#title#","SUMMARY INFO"),"#data#",tbl)
  Response.Write replace(tmp,"|", vbcrlf)
 End Sub
 
 '******************************************************************************************************************
 ''@SDESCRIPTION: Adds the Database-connection object to the debug-instance. To display Database-information
 ''@PARAM:   - oSQLDB [object]: connection-object
 '******************************************************************************************************************
 Public Sub GrabDatabaseInfo(byval oSQLDB)
  dbg_DB_Data = AddRow(dbg_DB_Data, "ADO Ver",oSQLDB.Version)
  dbg_DB_Data = AddRow(dbg_DB_Data, "OLEDB Ver",oSQLDB.Properties("OLE DB Version"))
  dbg_DB_Data = AddRow(dbg_DB_Data, "DBMS",oSQLDB.Properties("DBMS Name") & " Ver: " & oSQLDB.Properties("DBMS Version"))
  dbg_DB_Data = AddRow(dbg_DB_Data, "Provider",oSQLDB.Properties("Provider Name") & " Ver: " & oSQLDB.Properties("Provider Version"))
 End Sub
 
 '******************************************************************************************************************
 '* PrintDatabaseInfo
 '******************************************************************************************************************
 Private Sub PrintDatabaseInfo(byval DivSetNo)
  dim tbl
  tbl = MakeTable(dbg_DB_Data)
  tbl = replace(replace(replace(DivSets(DivSetNo),"#sectname#","DATABASE"),"#title#","DATABASE INFO"),"#data#",tbl)
  Response.Write replace(tbl,"|", vbcrlf)
 End Sub
 
 '******************************************************************************************************************
 '* PrintCollection
 '******************************************************************************************************************
 Private Sub PrintCollection(Byval Name, ByVal Collection, ByVal DivSetNo, ByVal ExtraInfo)
  Dim vItem, tbl, Temp
  For Each vItem In Collection
   if isobject(Collection(vItem)) and Name <> "SERVER VARIABLES" and Name <> "QUERYSTRING" and Name <> "FORM" then
    tbl = AddRow(tbl, vItem, "{object}")
   elseif isnull(Collection(vItem)) then
    tbl = AddRow(tbl, vItem, "{null}")
   elseif isarray(Collection(vItem)) then
    tbl = AddRow(tbl, vItem, "{array}")
   else
    if dbg_AllVars then
     tbl = AddRow(tbl, "<nobr>" & vItem & "</nobr>", server.HTMLEncode(Collection(vItem)))
    elseif (Name = "SERVER VARIABLES" and vItem <> "ALL_HTTP" and vItem <> "ALL_RAW") or Name <> "SERVER VARIABLES" then
     if Collection(vItem) <> "" then
      tbl = AddRow(tbl, vItem, server.HTMLEncode(Collection(vItem))) ' & " {" & TypeName(Collection(vItem)) & "}")
     else
      tbl = AddRow(tbl, vItem, "...")
     end if
    end if
   end if
  Next
  if ExtraInfo <> "" then tbl = tbl & "<TR><TD COLSPAN=2><HR></TR>" & ExtraInfo
  tbl = MakeTable(tbl)
  if Collection.count <= 0 then DivSetNo =2
  tbl = replace(replace(DivSets(DivSetNo),"#title#",Name),"#data#",tbl)
  tbl = replace(tbl,"#sectname#",replace(Name," ",""))
  Response.Write replace(tbl,"|", vbcrlf)
 End Sub
   
 '******************************************************************************************************************
 '* AddRow
 '******************************************************************************************************************
 Private Function AddRow(byval t, byval var, byval val)
  t = t & "|<TR valign=top>|<TD>|" & var & "|<TD>= " & val & "|</TR>"
  AddRow = t
 End Function
 
 '******************************************************************************************************************
 '* MakeTable
 '******************************************************************************************************************
 Private Function MakeTable(byval tdata)
  tdata = "|<table border=0 style=""font-size:10pt;font-weight:normal;"">" + tdata + "</Table>|"
  MakeTable = tdata
 End Function
 
 '******************************************************************************************************************
 ''@SDESCRIPTION: Draws the Debug-panel
 '******************************************************************************************************************
 Public Sub draw()
  If dbg_Enabled Then
   dbg_FinishTime = Now()
   
   Dim DivSet, x
   DivSet = split(dbg_Show_default,",")
   dbg_Show = split(dbg_Show,",")
   
   For x = 0 to ubound(dbg_Show)
    divSet(x) = dbg_Show(x)
   Next
   
   Response.Write "<BR><Table width=100% cellspacing=0 border=0 style=""font-family:arial;font-size:9pt;font-weight:normal;""><TR><TD><DIV style=""background:#005A9E;color:white;padding:4;font-size:12pt;font-weight:bold;"">Debugging-console:</DIV>"
   Call PrintSummaryInfo(divSet(0))
   Call PrintCollection("VARIABLES", dbg_Data,divSet(1),"")
   Call PrintCollection("QUERYSTRING", Request.QueryString(), divSet(2),"")
   Call PrintCollection("FORM", Request.Form(),divSet(3),"")
   Call PrintCookiesInfo(divSet(4))
   Call PrintCollection("SESSION", Session.Contents(),divSet(5),AddRow(AddRow(AddRow("","Locale ID",Session.LCID & " (&H" & Hex(Session.LCID) & ")"),"Code Page",Session.CodePage),"Session ID",Session.SessionID))
   Call PrintCollection("APPLICATION", Application.Contents(),divSet(6),"")
   Call PrintCollection("SERVER VARIABLES", Request.ServerVariables(),divSet(7),AddRow("","Timeout",Server.ScriptTimeout))
   Call PrintDatabaseInfo(divSet(8))
   Call PrintCollection("SESSION STATIC OBJECTS", Session.StaticObjects(),divSet(9),"")
   Call PrintCollection("APPLICATION STATIC OBJECTS", Application.StaticObjects(),divSet(10),"")
   Response.Write "</Table>"
  End If
 End Sub
 
 'Destructor
 Private Sub Class_Terminate()
  Set dbg_Data = Nothing
 End Sub

End Class

%>

類的說明:

CLASS debuggingConsole
Version: 1.2




Public Properties
Property Let Enabled(bNewValue) [bool] Sets "enabled" to true or false
Property Get Enabled [bool] Gets the "enabled" value
Property Let Show(bNewValue) [string] Sets the debugging panel. Where each digit in the string represents a debug information pane in order (11 of them). 1=open, 0=closed
Property Get Show [string] Gets the debugging panel.
Property Let AllVars(bNewValue) [bool] Sets wheather all variables will be displayed or not. true/false
Property Get AllVars [bool] Gets if all variables will be displayed.

Public Methods
public sub Print (label, output)
Adds a variable to the debug-informations.
public sub GrabDatabaseInfo (byval oSQLDB)
Adds the Database-connection object to the debug-instance. To display Database-information
public sub draw ()
Draws the Debug-panel

Methods Detail
 
public sub Print (label, output)
Parameters:  - label [string]: Description of the variable
- output [variable]: The variable itself
 
public sub GrabDatabaseInfo (byval oSQLDB)
Parameters:  - oSQLDB [object]: connection-object


文章來源:csdn
 放生
 愚愛
 夠愛
 觸電
 白狐
 葬愛
 光榮
 畫心
 火花
 稻香
 小酒窩
 下雨天
 右手邊
 安靜了
 魔杰座
 你不像她
 邊做邊愛
 擦肩而過
 我的答鈴
 懷念過去
 等一分鐘
 放手去愛
 冰河時代
 你的承諾
 自由飛翔
 原諒我一次
 吻的太逼真
 左眼皮跳跳
 做你的愛人
 一定要愛你
 飛向別人的床
 愛上別人的人
 感動天感動地
 心在跳情在燒
 玫瑰花的葬禮
 有沒有人告訴你
 即使知道要見面
 愛上你是一個錯
 最后一次的溫柔
 愛上你是我的錯
 怎么會狠心傷害我
 不是因為寂寞才想
 親愛的那不是愛情
 難道愛一個人有錯
 寂寞的時候說愛我
主站蜘蛛池模板: 柳林县| 灵宝市| 改则县| 绥阳县| 建阳市| 会东县| 饶阳县| 泊头市| 陵水| 绿春县| 三明市| 阿荣旗| 乌审旗| 德阳市| 贺兰县| 德兴市| 边坝县| 晋江市| 昆山市| 博白县| 新闻| 康保县| 北川| 周至县| 东海县| 武强县| 格尔木市| 九龙城区| 久治县| 潞西市| 和平区| 舞钢市| 南部县| 肃北| 盱眙县| 湘潭市| 华阴市| 文昌市| 碌曲县| 磐石市| 博罗县|