QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6633|回复: 1
打印 上一主题 下一主题

ASP中令人震撼的Debug类(VBScript)

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2004-11-21 11:43 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>不知道用ASP写代码的朋友是不是和我有一样的感受,ASP中最头疼的就是调试程序的时候不方便,我想可能很多朋友都会用这样的方法“response.write ”,然后输出相关的语句来看看是否正确。前几天写了一个千行的页面,里面大概有七八个SUB/FUNCTION,调试的时候用了有三十几个response.write ,天,调试完后把这三十个一个个删除,累! </P>$ Y' Y" W- E) A: j
<>今天看到一个ASP中的Debug类(VBS),试用了一下,绝!
' s. H, N. E/ Z! B5 u$ a使用方法很简单:
( G6 N9 l: r9 J; Ltest.asp </P>. y2 E4 I4 N6 @5 u; \$ \
<>&lt;!--#INCLUDE FILE="debuggingConsole.asp"--&gt;
/ O( d# h' F8 m* [/ F+ t& x4 `&lt;%
2 J. A: l; ^/ h- e5 g0 a- L5 t, U1 Joutput="XXXX" , b5 S( B0 x1 V
Set debugstr = New debuggingConsole - C+ q, E5 v+ a" c& ]- e
debugstr.Enabled = true
4 N( I+ M* c5 i0 k& t   debugstr.Print "参数output的值", output % h3 t# H& ?( t1 W5 g
   '……
7 v- ?, R$ ?4 ~   debugstr.draw 7 y! }; U: _1 l/ {4 R# N
Set debugstr = Nothing # n  }+ k8 {! ?! Z
%&gt; </P>
0 {4 z. v. ~: ]( ]; U2 u  f7 @; T<>=================================================== </P>5 w+ I9 l* B  x4 V: A
<>debuggingConsole.asp </P>
3 ~1 Q% n% X1 f<>&lt;% $ u$ k, d3 o( a% U6 Y) z$ [
Class debuggingConsole </P>
4 w1 N& [; c+ ~% _5 Y: Z<>   private dbg_Enabled
7 i3 G2 o4 M" f% F, [8 q   private dbg_Show
$ L: x# s/ F, z, C& }# `; K   private dbg_RequestTime
. T* y1 C$ ~% r   private dbg_FinishTime
' P1 o2 i( J4 \7 z   private dbg_Data 4 L' z( p! M/ F4 @
   private dbg_DB_Data 1 @% z# l; t& M
   private dbg_AllVars & `1 h8 w' I( A, y+ d" B
   private dbg_Show_default * i5 ^2 B& `0 ^$ T# [6 n
   private DivSets(2)
$ Q$ n! x' l9 B. S8 J$ r   * R# q: Q  r; C3 `3 Q
'Construktor =&gt; set the default values 1 a% |, j& E; y4 G. E) ?1 ?
Private Sub Class_Initialize()
- g2 ^; J5 s! {( D, Z( \* ^& X0 J   dbg_RequestTime = Now()
3 Q, X, h* j, `! ]4 g, `' ]   dbg_AllVars = false $ j% W; A5 q) {( ]5 A
   Set dbg_Data = Server.CreateObject("Scripting.Dictionary") </P>
- N" [1 t# s' T- _/ d<>DivSets(0) = "&lt;TR&gt;&lt;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';}""&gt;&lt;DIV id=sect#sectname# style=""font-weight:bold;cursor:hand;background:#7EA5D7;color:white;padding-left:4;padding-right:4;padding-bottom:2;""&gt;|#title#| &lt;DIV id=data#sectname# style=""cursor:text;display:none;background:#FFFFFF;padding-left:8;"" onclick=""window.event.cancelBubble = true;""&gt;|#data#| &lt;/DIV&gt;|&lt;/DIV&gt;|" </P>) t7 ~! T, e1 j& k. t2 e$ [; P
<>   DivSets(1) = "&lt;TR&gt;&lt;TD&gt;* F5 I) M) e4 u/ L  H* N& ~9 m  L
&lt;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';}""&gt;|#title#| &lt;DIV id=data#sectname# style=""cursor:text;display:block;background:#FFFFFF;padding-left:8;"" onclick=""window.event.cancelBubble = true;""&gt;|#data#| &lt;/DIV&gt;|&lt;/DIV&gt;|" </P>* {7 h3 q. {# y) l6 T# X
<>   DivSets(2) = "&lt;TR&gt;&lt;TD&gt;&lt;DIV id=sect#sectname# style=""background:#7EA5D7;color:lightsteelblue;padding-left:4;padding-right:4;padding-bottom:2;""&gt;|#title#| &lt;DIV id=data#sectname# style=""display:none;background:lightsteelblue;padding-left:8""&gt;|#data#| &lt;/DIV&gt;|&lt;/DIV&gt;|" </P>/ }* ?9 P3 p5 ]! M  h2 o7 r
<>   dbg_Show_default = "0,0,0,0,0,0,0,0,0,0,0" 6 N  S  g8 `0 X% p- k
End Sub </P>
5 ?1 j9 s6 s$ F- s  k1 o; S: E<>ublic Property Let Enabled(bNewValue) ''[bool] Sets "enabled" to true or false 7 W( Z8 Z8 f) G7 S  A
   dbg_Enabled = bNewValue 7 Y5 ^1 J- U* p& Q) r% d
End Property </P>, R% q" M" z4 |
<>ublic Property Get Enabled ''[bool] Gets the "enabled" value % ?2 t2 s! g& ?3 \9 t) \9 l9 N5 i" F
   Enabled = dbg_Enabled " L. v' k3 s* [6 }4 ^& u
End Property </P>
  v% w' t- Y0 O8 \0 M2 a<>ublic 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
) E" `* Y0 k" Q6 t& @; j4 {% W   dbg_Show = bNewValue
  N6 f5 X% g9 P4 C+ ?7 f/ kEnd Property </P>
) C9 u8 K, g0 t7 y<>ublic Property Get Show ''[string] Gets the debugging panel.
6 ?, F1 B. }6 `% B   Show = dbg_Show
4 v! c% r6 [6 p) xEnd Property </P>1 y& a4 q9 a  \0 K" y  U2 W( q& d
<>ublic Property Let AllVars(bNewValue) ''[bool] Sets wheather all variables will be displayed or not. true/false , w" m0 w( L9 e6 H3 |
   dbg_AllVars = bNewValue 6 m1 {( G, x6 e2 j  [7 W
End Property </P>
% I( I% S- j% m8 c: k1 V# Z<>ublic Property Get AllVars ''[bool] Gets if all variables will be displayed. % B2 j, E. G5 j* w1 U+ [
   AllVars = dbg_AllVars 7 W0 |  T5 e& a
End Property </P>$ P" C$ J: O/ n
<>'*********************************************************** ( f7 i  t+ z# W5 u. B; Q
''@SDESCRIPTION: Adds a variable to the debug-informations. 4 c9 P$ f# Z7 Q& W
''@PARAM:  - label [string]: Description of the variable
  j6 P( l  X7 U+ o# N; w''@PARAM:  - output [variable]: The variable itself
: h' `0 ]! G# q& }1 Q'***********************************************************
1 t- u4 a/ o0 nPublic Sub Print(label, output)
% |: n; i; Y1 Z- u   If dbg_Enabled Then 5 `; ?* P( B+ ?! A( Z
     if err.number &gt; 0 then ! J: T% W6 Z/ ]0 V1 s3 z. a0 ?4 |4 |
       call dbg_Data.Add(ValidLabel(label), "!!! Error: " &amp; err.number &amp; " " &amp; err.Description) 1 x0 a. `% G* ]& V( j$ v- U
       err.Clear * Q, D2 m, `+ Z; D/ l
     else . J5 \, W0 _3 E" [) ]1 k
       uniqueID = ValidLabel(label)
" U+ f, W2 q! Q4 u8 q       response.write uniqueID - k) e1 P9 M# I$ O1 p# s
       call dbg_Data.Add(uniqueID, output)
# D1 j2 b; r/ L; C8 T     end if
8 P2 e3 M9 q; H   End If   D! R& W5 F; p* `5 @! ~
End Sub
+ N) k, ~& y/ L6 ~  
; h$ @3 `& f' h8 m4 ^" X) F) F'*********************************************************** " I) u3 E' z6 z
'* ValidLabel
; F* k5 U+ P9 v'***********************************************************
7 z" G! g% G- N' C$ lPrivate Function ValidLabel(byval label)
0 V# S! K4 k: _% y% L5 \   dim i, lbl
# `0 {& a3 G% S# Y3 `   i = 0
; v) |& }( C" V- Q3 g. [& o   lbl = label
- H" G, G( ]$ ^6 \  n7 h   do
+ d7 \% [1 n4 t   if not dbg_Data.Exists(lbl) then exit do ' S9 }3 V% {$ M0 n  E# `+ x
   i = i + 1
' }! T* U9 ~2 Z# K/ n   lbl = label &amp; "(" &amp; i &amp; ")" 1 U* Q. a- q0 F: N; }: y4 N
   loop until i = i / j1 q; F! f) _
  , c6 ?# M( B. O4 [  \; J+ w8 P, @, C
   ValidLabel = lbl 5 V& g( O6 `' ~
End Function
; A% H( Z# S. n* }) E  + [2 ~) J3 a2 M9 _. m1 F
'*********************************************************** + r+ o/ i+ n9 j4 }% \" n# [
'* PrintCookiesInfo
* h! Z% k3 Q  c3 @# m! u9 T'*********************************************************** 5 \4 y7 t! X2 {
Private Sub PrintCookiesInfo(byval DivSetNo) ; i0 p6 Z: }' t
   dim tbl, cookie, key, tmp
; I. [( p  c! K  J9 ]   For Each cookie in Request.Cookies , F: P) W  s4 o, r$ Z: g6 h
   If Not Request.Cookies(cookie).HasKeys Then 5 j- x" l( D1 N
     tbl = AddRow(tbl, cookie, Request.Cookies(cookie))   
7 s5 M# x" J! P" m   Else
3 {( ?) i+ ]. Z, Z% q     For Each key in Request.Cookies(cookie) % P& l2 |2 b  C9 ?. w! {
     tbl = AddRow(tbl, cookie &amp; "(" &amp; key &amp; ")", Request. % U2 J& o3 h) A& l/ W" f
Cookies(cookie)(key))   
4 s  E, b( t" Y. ]* n   Next
, v( _- G2 \7 X# H9 y* C% W   End If
) Y) P  H- A4 O2 ?/ c+ B   Next </P>
$ }. n, r" p: `<>   tbl = MakeTable(tbl)
2 ~, L& w9 h# `* _   if Request.Cookies.count &lt;= 0 then DivSetNo = 2 ) ?& Y& K% J$ U) `% u: \. m
   tmp = replace(replace(replace(DivSets(DivSetNo),"#sectname#","COOKIES"),"#title#","COOKIES"),"#data#",tbl)
2 F5 s' W1 k4 w8 E   Response.Write replace(tmp,"|", vbcrlf)
5 }2 X4 @1 Q, M! Hend sub
4 y* F: d( x% B- a  3 ^0 E2 P8 C3 u, I& P9 ]! t
'*********************************************************** + J5 Z# J8 K" A4 p  U2 k; \- J
'* PrintSummaryInfo " d# z$ U7 z3 H! x4 T
'***********************************************************
9 W4 S% {2 @0 Y) N! XPrivate Sub PrintSummaryInfo(byval DivSetNo)
$ E* K4 H2 r, y2 V* w% ?/ b) o* |/ J   dim tmp, tbl
+ r2 e) W* c% T: @   tbl = AddRow(tbl, "Time of Request",dbg_RequestTime) 4 H$ [: G; d( U/ `* {1 u# X
   tbl = AddRow(tbl, "Elapsed Time",DateDiff("s", dbg_RequestTime, dbg_FinishTime) &amp; " seconds")
. {8 K, A/ y. b' o- t7 A& Z3 u5 G   tbl = AddRow(tbl, "Request Type",Request.ServerVariables("REQUEST_METHOD"))
) `/ a5 v2 n3 `$ F( \" e   tbl = AddRow(tbl, "Status Code",Response.Status)
% y6 m8 @' t9 \, m% e" J! y5 Y4 r% I   tbl = AddRow(tbl, "Script Engine",ScriptEngine &amp; " " &amp; ScriptEngineMajorVersion &amp; "." &amp; ScriptEngineMinorVersion &amp; "." &amp; ScriptEngineBuildVersion) % Y3 K/ w; i4 g# n  y
   tbl = MakeTable(tbl)
. y/ c# \% f, t+ b" v0 Q  i7 B   tmp = replace(replace(replace(DivSets(DivSetNo),"#sectname#","SUMMARY"),"#title#","SUMMARY INFO"),"#data#",tbl)   Y4 O4 n* S1 U/ p
   Response.Write replace(tmp,"|", vbcrlf) + O5 }; X0 t! }' A9 J' w/ B
End Sub </P>
" e, E3 V! E" ?/ u' I% G<>'***********************************************************   s7 p0 L) @; x4 K5 e1 l. }
''@SDESCRIPTION: Adds the Database-connection object to the debug-instance. To display Database-information ! F- G+ E: J/ e& ]
''@PARAM:  - oSQLDB [object]: connection-object
1 o0 y* r0 Q% x" X! |' g, b4 T'***********************************************************
( p% Q  `0 t6 u& @Public Sub GrabDatabaseInfo(byval oSQLDB) 7 t9 d$ N# L3 c9 _
   dbg_DB_Data = AddRow(dbg_DB_Data, "ADO Ver",oSQLDB.Version) ; i2 m2 |4 s3 I0 j7 k
   dbg_DB_Data = AddRow(dbg_DB_Data, "OLEDB Ver",oSQLDB.Properties("OLE DB Version"))
. E- j; g: T0 P# y; p   dbg_DB_Data = AddRow</P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持1 反对反对0 微信微信
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

(dbg_DB_Data, "DBMS",oSQLDB.Properties("DBMS Name") &amp; " Ver: " &amp; oSQLDB.Properties("DBMS Version")) # v: j! A9 Q) C6 f! E
   dbg_DB_Data = AddRow(dbg_DB_Data, "rovider",oSQLDB.Properties("rovider Name") &amp; " Ver: " &amp; oSQLDB.Properties("rovider Version"))
) X! f. t5 }) S: t5 X) l0 c; TEnd Sub <>'***********************************************************
) q* T$ p# Y6 Z' j! Y+ p0 R'* PrintDatabaseInfo ! F/ e. H* A( \/ T% x- ?# B' j# C
'*********************************************************** & W% l- m9 P& v2 K  y
Private Sub PrintDatabaseInfo(byval DivSetNo)
% W2 g$ F4 i# r. K5 a/ c8 U   dim tbl
2 s, w0 z1 z+ X7 R2 H5 Z   tbl = MakeTable(dbg_DB_Data)
# ]9 f( ~- i0 p   tbl = replace(replace(replace(DivSets(DivSetNo),"#sectname#","DATABASE"),"#title#","DATABASE INFO"),"#data#",tbl)
3 J4 A; Z- D$ Y" j   Response.Write replace(tbl,"|", vbcrlf) ; V0 A( D2 O6 W
End Sub </P><>'***********************************************************
% U4 ~* p- C6 N'* PrintCollection 9 p3 [1 O0 r# u- J: `/ C2 ^
'***********************************************************   ^3 Y5 ]4 z4 `4 Q; B2 U1 o; X2 i
Private Sub PrintCollection(Byval Name, ByVal Collection, ByVal DivSetNo, ByVal ExtraInfo)
" |! z7 B* v5 r. R9 \& a   Dim vItem, tbl, Temp
# x8 F. @5 H6 W  I* ?8 }' S   For Each vItem In Collection
$ b" W% E+ m/ M- j. _5 i- }" ^     if isobject(Collection(vItem)) and Name &lt;&gt; "SERVER VARIABLES" and Name &lt;&gt; "QUERYSTRING" and Name &lt;&gt; "FORM" then ( }. N- o/ t$ P; `+ R4 m* t! Q
       tbl = AddRow(tbl, vItem, "{object}") : T1 ]2 z" X5 z% z
     elseif isnull(Collection(vItem)) then
1 j% s& N5 U' O$ G4 b  @- G/ U       tbl = AddRow(tbl, vItem, "{null}") : y; Q( r4 x4 V2 X
     elseif isarray(Collection(vItem)) then % Q! v  R$ U" F: q4 A! ?& H+ P
       tbl = AddRow(tbl, vItem, "{array}") ( a! s& A3 _/ G- v3 ^+ T  l+ r
     else
% g* j: y+ @9 ?* B9 w       if dbg_AllVars then
/ z. Q/ ~, V' c       tbl = AddRow(tbl, "&lt;nobr&gt;" &amp; vItem &amp; "&lt;/nobr&gt;", server.HTMLEncode(Collection(vItem))) 4 f/ p" b/ a/ }( {6 N9 J
     elseif (Name = "SERVER VARIABLES" and vItem &lt;&gt; "ALL_HTTP" and vItem &lt;&gt; "ALL_RAW") or Name &lt;&gt; "SERVER VARIABLES" then
* Y' ^4 B, x, H/ v       if Collection(vItem) &lt;&gt; "" then
0 e- q4 l3 l' _7 N/ ?7 f       tbl = AddRow(tbl, vItem, server.HTML
# y2 }6 u' s% W* v4 S4 q' \Encode(Collection(vItem))) ' &amp; " {" &amp; TypeName(Collection(vItem)) &amp; "}")
0 Z" D& T2 {% I. M4 J       else ; U: B% H: Q! n* \. M1 n/ z+ w1 ]2 u
       tbl = AddRow(tbl, vItem, "...")
7 I: R+ z- w' |, t       end if 6 D. Z' @9 a" a3 o$ H- r
     end if
3 r- }0 o1 K" |4 n  f! z2 D   end if , p6 P0 x! @2 C  ~, O8 b9 d
   Next / M! n0 K1 t( M# q% y6 S5 p/ W1 `
   if ExtraInfo &lt;&gt; "" then tbl = tbl &amp; "&lt;TR&gt;&lt;TD COLSPAN=2&gt;&lt;HR&gt;&lt;/TR&gt;" &amp; ExtraInfo
9 z  @$ ?1 _, ]0 `   tbl = MakeTable(tbl)
# l7 r+ c+ O) Q3 {5 c& q   if Collection.count &lt;= 0 then DivSetNo =2
3 g$ k0 u) u; |5 D' j     tbl = replace(replace(DivSets(DivSetNo),"#title#",Name),"#data#",tbl)
3 Y& c4 ^1 h7 m7 m) y5 h6 i6 [     tbl = replace(tbl,"#sectname#",replace(Name," ",""))
, q* |* S9 F; a5 D; V/ B7 a     Response.Write replace(tbl,"|", vbcrlf) % ~5 H/ L) _* N2 q  {
End Sub $ d) r" K' M2 {  k* c+ p5 J3 k! k6 R
  
* D& p' i, T0 L. q0 E% j* V'***********************************************************
+ @% m3 F" n" H2 F0 D( n; ^'* AddRow
2 r' C4 r- d+ a+ N* p8 l: Z'*********************************************************** 2 U9 B3 C) ]9 W
Private Function AddRow(byval t, byval var, byval val) . i# _/ x! T* Q% i
   t = t &amp; "|&lt;TR valign=top&gt;|&lt;TD&gt;|" &amp; var &amp; "|&lt;TD&gt;= " &amp; val &amp; "|&lt;/TR&gt;" % v* ^4 s+ l" z6 G, l2 }$ Y
   AddRow = t
* Y9 k  k- b9 q% D& [. o* FEnd Function </P><>'***********************************************************
" y2 k  _& M; x7 v. w2 h'* MakeTable
( g, s9 r; `' |7 A" X) w; H'*********************************************************** # w8 Q* Z' u4 x( m
Private Function MakeTable(byval tdata)
; U. {' y' r; b0 M  u7 Z: a2 l   tdata = "|&lt;table border=0 style=""font-size:10pt;font-weight:normal;""&gt;" + tdata + "&lt;/Table&gt;|" ! J/ y& q: l. _" h4 T6 |- v
   MakeTable = tdata
3 m" ^5 m6 A6 t! m( m2 ]* wEnd Function </P><>'*********************************************************** & t1 ^" I7 ~2 T1 V# K& a- ?, M
''@SDESCRIPTION: Draws the Debug-panel 4 h, g) w1 }* A/ \  ]
'***********************************************************
$ ^4 |9 }" l4 i5 c# r1 bPublic Sub draw()
9 F7 W% q$ m7 G5 O/ i5 T0 b   If dbg_Enabled Then
( t+ [6 ]: H4 x3 Y. [7 @     dbg_FinishTime = Now() 0 G% f- V, Q' {/ `' s' ]) b
  
! f5 t$ g# c4 U  X2 V7 G. U( _' u   Dim DivSet, x + k9 T  |/ \2 m  H* R3 j8 y
   DivSet = split(dbg_Show_default,",") 8 g- u, ?) d$ C$ \* R8 p9 R5 a
     dbg_Show = split(dbg_Show,",") ( Q8 V) m! k  g9 V+ [
  / z9 u. Z& [. o1 \7 j2 I
   For x = 0 to ubound(dbg_Show)
1 o2 h! |" z  R* z     divSet(x) = dbg_Show(x) - y, t) H: k+ Y- H5 G0 k
   Next
4 R& D( k  c6 y8 k/ s5 ~  ; ^5 Z' W$ P; h, k' o
   Response.Write "&lt;BR&gt;&lt;Table width=100% cellspacing=0 border=0 style=""font-family:arial;font-size:9pt;font-weight:normal;""&gt;&lt;TR&gt;&lt;TD&gt;&lt;DIV style=""background:#005A9E;color:white;padding:4;font-size:12pt;font-weight:bold;""&gt;Debugging-console:&lt;/DIV&gt;" 6 X; z" C% z8 o' y" B& n0 }; V1 V) `3 d
   Call PrintSummaryInfo(divSet(0))
+ m1 f1 b6 \5 r+ g6 C     Call PrintCollection("VARIABLES", dbg_Data,divSet(1),"")
. W& Q4 L, @0 ^0 u! k/ d! \' g! `& _    Call PrintCollection("QUERYSTRING", Request.QueryString(), divSet(2),"")
$ Z8 P1 F+ ^/ Z- q% I7 r( g    Call PrintCollection("FORM", Request.Form(),divSet(3),"") 3 u( ^9 @$ q2 I% I5 E
    Call PrintCookiesInfo(divSet(4))
9 x3 [1 n  Q1 l, F, U( D    Call PrintCollection("SESSION", Session.Contents(),divSet(5),AddRow(AddRow(AddRow("","Locale ID",Session.LCID &amp; " (&amp;H" &amp; Hex(Session.LCID) &amp; ")"),"Code Page",Session.CodePage),"Session ID",Session.SessionID))
' M0 i2 [6 Y3 A" g0 f9 I5 d    Call PrintCollection("APPLICATION", Application.Contents(),divSet(6),"")
) m7 i( m0 n/ K7 c    Call PrintCollection("SERVER VARIABLES", Request.ServerVariables(),divSet(7),AddRow("","Timeout",Server.ScriptTimeout)) ) ^% @. X* o6 G& K
    Call PrintDatabaseInfo(divSet(8))
- Q: o3 B# @+ @6 J: ?$ e$ J$ C5 v    Call PrintCollection("SESSION STATIC OBJECTS", Session.StaticObjects(),divSet(9),"") ' l$ y9 `, C/ Y3 b( e7 i+ e
    Call PrintCollection("APPLICATION STATIC OBJECTS", Application.StaticObjects(),divSet(10),"")
, c4 [) Y; {8 ~& H9 N9 {    Response.Write "&lt;/Table&gt;"
* z* L/ y' Z  `! p- m, }" D   End If
$ K3 p* B0 J; s, ^3 E! u2 ZEnd Sub </P><>'Destructor   a+ g0 h5 b* i
Private Sub Class_Terminate() 6 b0 Z2 y3 B1 q4 O+ s# _7 {/ ?% \
   Set dbg_Data = Nothing - G7 H! h: @: e  l/ H- V
End Sub </P><>End Class </P><>%&gt; </P><>类的说明: </P><>
5 L5 v0 K, @, CCLASS debuggingConsole + ?- e9 A# q% v0 G7 {. L, B- t& r% v
Version: 1.2 </P><>-------------------------------------------------------------------------------- </P><>ublic Properties </P><>roperty Let Enabled(bNewValue)===[bool] Sets "enabled" to true or false
" u) ?0 C7 H2 n: B&amp;n
$ x9 L( ^1 N4 b+ \, c7 B8 Hbsp;
" b& Y6 w- ^% T# U! e4 [; mProperty Get Enabled===[bool] Gets the "enabled" value % S( t& T3 p6 _8 F
  
) Y) k' d& q, bProperty 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
: m& s2 X2 v0 W/ }% n! t' W) B  
7 e) b- T; v9 OProperty Get Show===[string] Gets the debugging panel. : l1 n$ ^7 p$ e0 v
  : r7 U& B" ]1 h9 u0 N
Property Let AllVars(bNewValue)===[bool] Sets wheather all variables will be displayed or not. true/false </P><>roperty Get AllVars===[bool] Gets if all variables will be displayed.  </P><>--------------------------------------------------------------------------------
4 h( W1 J; O& K/ Z# x4 TPublic Methods </P><>public sub===Print (label, output) : Z- ]  s, p+ P/ X" r9 g
   Adds a variable to the debug-informations.  </P><>public sub===GrabDatabaseInfo (byval oSQLDB)
" T5 u- v$ X; `3 X) Y   Adds the Database-connection object to the debug-instance. To display Database-information  </P><>public sub===draw () " N) D  N4 x6 p+ X( f
   Draws the Debug-panel  </P><>--------------------------------------------------------------------------------
& A# U% c& z' b, ?Methods Detail ( L. c2 p% y1 t
  
$ U& T# K" u" }! ypublic sub===Print (label, output) ; U2 R$ B* J) W5 C3 Z
Parameters:  
9 |- ?3 d2 L  b$ ]! u2 q! |: \   - label [string]: Description of the variable / ?+ i* Q8 L8 B5 z. r: Y$ w: j7 b
   - output [variable]: The variable itself
; V, \/ S. I2 f) j. G, G0 I  % V/ k, m8 R7 s+ |) G
public sub===GrabDatabaseInfo (byval oSQLDB) 2 t3 I2 P; k% p+ T# f
Parameters:  ; k4 l. N9 N( @0 h" T
   - oSQLDB [object]: connection-object</P>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-1-15 07:19 , Processed in 0.473792 second(s), 56 queries .

回顶部