﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Weekly/Monthly Challenge?</title><link>http://www.visualbasicscript.com/</link><description /><copyright>(c) VBScript Forum</copyright><ttl>30</ttl><item><title>Re: RE: Weekly/Monthly Challenge? (Netjunkie)</title><description>  For a person starting out like me this is one of the best threads ever!  &lt;br&gt;   &lt;br&gt;   &lt;br&gt;  </description><link>http://www.visualbasicscript.com/fb.ashx?m=80117</link><pubDate>Wed, 20 Jan 2010 19:47:31 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (TNO)</title><description>  Indeed, I noticed that as well. I believe this solution was written before GetRef() was implemented. (WSH 5?) </description><link>http://www.visualbasicscript.com/fb.ashx?m=59047</link><pubDate>Sat, 12 Apr 2008 07:48:42 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (ehvbs)</title><description>  Hi TNO, &lt;br&gt;   &lt;br&gt;  nice solution! But as can be seen from this: &lt;br&gt;   &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 Class acc
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Private n
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Public Default Function inc(i)
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n = n + i
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inc = n
 &amp;nbsp;&amp;nbsp;&amp;nbsp; End Function
 End Class
 
 Function foo(n)
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Dim bar
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Set bar = New acc
 &amp;nbsp;&amp;nbsp;&amp;nbsp; bar(n)
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Set foo = bar
 End Function
 
 Dim fncAcc : Set fncAcc = foo( 3 )
 
 WScript.Echo "type of GetRef( 'foo' ):", TypeName( GetRef( "foo" ) )
 WScript.Echo "type of fncAcc:", TypeName( fncAcc )
 WScript.Echo "3 calls of fncAcc( 4 )"
 
 Dim nCnt
 For nCnt = 1 To 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo fncAcc( 4 )
 Next
 
 Dim oAcc : Set oAcc = New acc
 WScript.Echo "type of oAcc:", TypeName( oAcc )
 WScript.Echo "3 calls of oAcc.inc( 4 )"
 
 For nCnt = 1 To 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo oAcc.inc( 4 )
 Next
 &lt;/pre&gt; &lt;br&gt;   &lt;br&gt;  output: &lt;br&gt;   &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 type of GetRef( 'foo' ): Object
 type of fncAcc: acc
 3 calls of fncAcc( 4 )
 7
 11
 15
 type of oAcc: acc
 3 calls of oAcc.inc( 4 )
 4
 8
 12
 &lt;/pre&gt; &lt;br&gt;   &lt;br&gt;  &amp;nbsp; (1) foo() doesn't return a function ('pointer'), but an object of class acc &lt;br&gt;   &lt;br&gt;  &amp;nbsp; (2) as you have to write a class (acc) anyway, the addtion of foo() is &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; extra work with no gain at all. &lt;br&gt;   &lt;br&gt;  Regards &lt;br&gt;   &lt;br&gt;  ehvbs &lt;br&gt;   &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=59046</link><pubDate>Sat, 12 Apr 2008 05:27:04 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (TNO)</title><description>  Here's the solution to my original challenge: &lt;br&gt;   &lt;br&gt;  &lt;pre class="prettyprint"&gt;Class acc
     Private n
     Public Default Function inc(i)
         n = n + i
         inc = n
     End Function
 End Class
 
 Function foo(n)
     Dim bar
     Set bar = New acc 
     bar(n)
     Set foo = bar
 End Function&lt;/pre&gt; &lt;br&gt;   &lt;br&gt;  The article I was reading when I came across this is here: &lt;a href="http://www.paulgraham.com/icad.html" target="_blank" rel="nofollow"&gt;http://www.paulgraham.com/icad.html&lt;/a&gt; </description><link>http://www.visualbasicscript.com/fb.ashx?m=59032</link><pubDate>Fri, 11 Apr 2008 14:31:12 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (dm_4ever)</title><description>  Thanks ehvbs for the simplified example of what's going on.&amp;nbsp; This really helped in understanding the previous example...though I still havent' gone completely through it to determine why it doesn't work as you stated.&amp;nbsp; </description><link>http://www.visualbasicscript.com/fb.ashx?m=58976</link><pubDate>Thu, 10 Apr 2008 08:22:41 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (ehvbs)</title><description>  Hi dm_4ever, &lt;br&gt;   &lt;br&gt;  you must be joking! But have a look at this &lt;br&gt;   &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 '' simpleiter.vbs - showing a simple VBScript iterator class
 
 '' cIncr - Incrementor
 '
 Class cIncr
 
 Private m_nCur ''&amp;lt; stores current counter value
 
 Private Sub Class_Initialize()&amp;nbsp; ''&amp;lt; constructor - alas, no parameters possible
 &amp;nbsp; m_nCur = 0
 End Sub
 
 Private Sub Class_Terminate() ''&amp;lt; destructor - not really needed here
 End Sub
 
 Public Function init( nStart ) ''&amp;lt; nifty trick to get construction with parameter(s)
 &amp;nbsp; m_nCur = nStart&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''&amp;lt; (c) Justin Piper
 &amp;nbsp; Set init = Me ''&amp;lt; returns the object/instance (this,$self) to make Set oIncr = New cIncr.init( 5 ) possible
 End Function
 
 Public Function getNext() ''&amp;lt; returns m_Cur &amp;amp; increments [much more intuitive than the Javascript iterator]
 &amp;nbsp; getNext = m_nCur
 &amp;nbsp; m_nCur&amp;nbsp; = m_nCur + 1 ''&amp;lt; fixed Step
 End Function
 
 End Class
 
 '' main
 
 Dim oIncr1 : Set oIncr1 = New cIncr.init( 4711 )
 Dim oIncr2 : Set oIncr2 = New cIncr.init(&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 )
 Dim nIdx
 For nIdx = 1 To 5
 &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo nIdx, oIncr1.getNext, oIncr2.getNext()
 Next
 &lt;/pre&gt; &lt;br&gt;    &lt;br&gt;  to see the principle of an iterator in isolation. &lt;br&gt;   &lt;br&gt;  Regards &lt;br&gt;   &lt;br&gt;  ehvbs &lt;br&gt;   &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=58955</link><pubDate>Wed, 09 Apr 2008 15:55:40 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (dm_4ever)</title><description>  If I knew what that JavaScript example does or how to use it I might give it&amp;nbsp; a shot.&amp;nbsp; Regardless, you guys are on a different level than me...just looking at ehvbs post damn nearly made my brain explode. &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=58952</link><pubDate>Wed, 09 Apr 2008 14:35:11 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (ehvbs)</title><description>  Hi all challengees, &lt;br&gt;   &lt;br&gt;  my challenges are: &lt;br&gt;   &lt;br&gt;  (1) Explain how and why this code (doesn't) work(s): &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 &amp;lt;?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?&amp;gt;
 &amp;lt;package&amp;gt;
 &amp;nbsp;&amp;lt;job id = "iter"&amp;gt;
 &amp;nbsp; &amp;lt;script language = "Javascript"&amp;gt;
 &amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[
 // ###########################################################################
 
 function buildJsIter( nStart )
 { return function( nStep ) { return nStart += nStep; };
 }
 
 // ###########################################################################
 &amp;nbsp;&amp;nbsp; ]]&amp;gt;
 &amp;nbsp; &amp;lt;/script&amp;gt;
 &amp;nbsp; &amp;lt;script language = "VBScript"&amp;gt;
 &amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[
 ' ############################################################################
 
 Option Explicit
 
 WScript.Quit doAllTest()
 WScript.Quit doVbsIterFuncTest()
 WScript.Quit doVbsIterTest()
 WScript.Quit doJsIterTest()
 
 Function doJsIterTest()
 &amp;nbsp; Dim nStart&amp;nbsp;&amp;nbsp;&amp;nbsp; : nStart&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 5
 &amp;nbsp; Dim fncJsIter : Set fncJsIter = buildJsIter( nStart )
 &amp;nbsp; Dim nStep
 &amp;nbsp; WScript.Echo "JsIter starts with", nStart
 &amp;nbsp; For nStep = 1 To 4
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo nStep, fncJsIter( nStep )
 &amp;nbsp; Next
 &amp;nbsp; doJsIterTest = 0
 End Function
 
 Function doVbsIterTest()
 &amp;nbsp; Dim nStart&amp;nbsp;&amp;nbsp; : nStart&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 5
 &amp;nbsp; Dim oVbsIter : Set oVbsIter = New cVbsIter.init( nStart )
 &amp;nbsp; Dim nStep
 &amp;nbsp; WScript.Echo "VbsIter starts with", nStart
 &amp;nbsp; For nStep = 1 To 4
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo nStep, oVbsIter.getNext( nStep )
 &amp;nbsp; Next
 &amp;nbsp; doVbsIterTest = 0
 End Function
 
 Function doVbsIterFuncTest()
 &amp;nbsp; Dim nStart&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : nStart&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 5
 &amp;nbsp; Dim fncVbsIterr : Set fncVbsIterr = buildVbsIterFunc( nStart )
 &amp;nbsp; Dim nStep
 &amp;nbsp; WScript.Echo "VbsIter starts with", nStart
 &amp;nbsp; For nStep = 1 To 4
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo nStep, fncVbsIterr( nStep )
 &amp;nbsp; Next
 &amp;nbsp; doVbsIterFuncTest = 0
 End Function
 
 Function doAllTest()
 &amp;nbsp; Dim nStart, nStep, nType, nIdx, nNext
 &amp;nbsp; Dim aIters( 2, 1 )
 &amp;nbsp; aIters( 0, 0 )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = "JS&amp;nbsp; "
 &amp;nbsp; Set aIters( 0, 1 ) = CreateObject( "Scripting.Dictionary" )
 &amp;nbsp; aIters( 1, 0 )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = "VBSC"
 &amp;nbsp; Set aIters( 1, 1 ) = CreateObject( "Scripting.Dictionary" )
 &amp;nbsp; aIters( 2, 0 )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = "VBSF"
 &amp;nbsp; Set aIters( 2, 1 ) = CreateObject( "Scripting.Dictionary" )
 ' For nStart = 1 To 2
 &amp;nbsp; For nStart = 1 To 10 Step 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo "Start is", nStart
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For nType = 0 To UBound( aIters, 1 )
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select Case nType
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set aIters( nType, 1 )( aIters( nType, 1 ).Count ) = buildJsIter( nStart )
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set aIters( nType, 1 )( aIters( nType, 1 ).Count ) = New cVbsIter.init( nStart )
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 2
 '&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Sleep 300
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set aIters( nType, 1 )( aIters( nType, 1 ).Count ) = buildVbsIterFunc( nStart )
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Select
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next
 '&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For nStep = 1 To 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For nStep = 1 To 10 Step 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo " Step is", nStep
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For nType = 0 To UBound( aIters, 1 )
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo "&amp;nbsp; Type is", aIters( nType, 0 )
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each nIdx In aIters( nType, 1 ).Keys
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo "&amp;nbsp;&amp;nbsp; Idx is", nIdx
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select Case nType
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nNext = aIters( nType, 1 )( nIdx )( nStep )
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nNext = aIters( nType, 1 )( nIdx ).getNext( nStep )
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nNext = aIters( nType, 1 )( nIdx )( nStep )
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Select
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo "&amp;nbsp;&amp;nbsp;&amp;nbsp; Next is", nNext
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next
 &amp;nbsp; Next
 &amp;nbsp; doAllTest = 0
 End Function
 
 Class cVbsIter
 
 Private m_nCur
 
 Public Function init( nStart )
 &amp;nbsp; m_nCur = nStart
 &amp;nbsp; Set init = Me
 End Function
 
 Public Function getNext( nStep )
 &amp;nbsp; m_nCur&amp;nbsp; = m_nCur + nStep
 &amp;nbsp; getNext = m_nCur
 End Function
 
 End Class
 
 Function buildVbsIterFunc( nStart )
 &amp;nbsp; Dim sFuncName : sFuncName = getUnique()
 &amp;nbsp; Dim sCode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : sCode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = Join( Array( _
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Dim gnStart_§FN§ : gnStart_§FN§ = " &amp;amp; nStart _
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "Function §FN§( nStep )" _
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "&amp;nbsp; gnStart_§FN§ = gnStart_§FN§ + nStep" _
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "&amp;nbsp; §FN§&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = gnStart_§FN§" _
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "End Function" _
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ), vbCrLf )
 &amp;nbsp; sCode = Replace( sCode, "§FN§", sFuncName )
 ' WScript.Echo sCode
 &amp;nbsp; ExecuteGlobal sCode
 &amp;nbsp; Set buildVbsIterFunc = GetRef( sFuncName )
 End Function
 
 Function getUnique_()
 &amp;nbsp; Dim sTStamp : sTStamp = CStr( cDbl( Now ) ) &amp;amp; CStr( Timer() )
 ' WScript.Echo sTStamp
 &amp;nbsp; Dim oRE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Set oRE = New RegExp
 &amp;nbsp; oRE.Global&amp;nbsp; = True
 &amp;nbsp; oRE.Pattern = "[\D]"
 &amp;nbsp; getUnique_&amp;nbsp; = "X" &amp;amp; oRE.Replace( sTStamp, "" )
 End Function
 
 Function getUnique()
 &amp;nbsp; getUnique = Mid( CreateObject( "Scripting.FileSystemObject" ).GetTempName, 3, 6 )
 End Function
 
 ' ############################################################################
 &amp;nbsp;&amp;nbsp; ]]&amp;gt;
 &amp;nbsp; &amp;lt;/script&amp;gt;
 &amp;nbsp;&amp;lt;/job&amp;gt;
 &amp;lt;/package&amp;gt;
 &lt;/pre&gt; &lt;br&gt;   &lt;br&gt;  output: &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 Start is 1
 &amp;nbsp;Step is 1
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 2
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 2
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 2
 &amp;nbsp;Step is 4
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 6
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 6
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 6
 &amp;nbsp;Step is 7
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 13
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 13
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 13
 &amp;nbsp;Step is 10
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 23
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 23
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 23
 Start is 4
 &amp;nbsp;Step is 1
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 24
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 5
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 24
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 5
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 24
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 5
 &amp;nbsp;Step is 4
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 28
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 9
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 28
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 9
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 28
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 9
 &amp;nbsp;Step is 7
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 35
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 16
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 35
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 16
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 35
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 16
 &amp;nbsp;Step is 10
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 45
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 26
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 45
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 26
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 45
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 26
 Start is 7
 &amp;nbsp;Step is 1
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 46
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 27
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 8
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 46
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 27
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 8
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 46
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 27
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 8
 &amp;nbsp;Step is 4
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 50
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 31
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 12
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 50
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 31
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 12
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 50
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 31
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 12
 &amp;nbsp;Step is 7
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 57
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 38
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 19
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 57
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 38
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 19
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 57
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 38
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 19
 &amp;nbsp;Step is 10
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 67
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 48
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 29
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 67
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 48
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 29
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 67
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 48
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 29
 Start is 10
 &amp;nbsp;Step is 1
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 68
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 49
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 30
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 11
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 68
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 49
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 30
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 11
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 68
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 49
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 30
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 11
 &amp;nbsp;Step is 4
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 72
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 53
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 34
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 15
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 72
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 53
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 34
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 15
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 72
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 53
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 34
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 15
 &amp;nbsp;Step is 7
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 79
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 60
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 41
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 22
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 79
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 60
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 41
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 22
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 79
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 60
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 41
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 22
 &amp;nbsp;Step is 10
 &amp;nbsp; Type is JS&amp;nbsp; 
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 89
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 70
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 51
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 32
 &amp;nbsp; Type is VBSC
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 89
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 70
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 51
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 32
 &amp;nbsp; Type is VBSF
 &amp;nbsp;&amp;nbsp; Idx is 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 89
 &amp;nbsp;&amp;nbsp; Idx is 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 70
 &amp;nbsp;&amp;nbsp; Idx is 2
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 51
 &amp;nbsp;&amp;nbsp; Idx is 3
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Next is 32
 &lt;/pre&gt; &lt;br&gt;   &lt;br&gt;  (2) Come up with a way to prove/verify the (enhanced?) code. &lt;br&gt;   &lt;br&gt;  Regards &lt;br&gt;   &lt;br&gt;  ehvbs &lt;br&gt;   &lt;br&gt;   &lt;br&gt;   &lt;br&gt;   &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=58824</link><pubDate>Sat, 05 Apr 2008 01:29:18 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (TNO)</title><description>  Its too bad this topic fell off the face of the map, but I found an interesting article(anonymous for now) that posed a challenge I would like to reproduce here to hopefully renew interest. &lt;br&gt;   &lt;br&gt;  The challenge:  &lt;br&gt;  &lt;blockquote class="quote"&gt;&lt;i&gt;&lt;/i&gt;&lt;br&gt; &lt;br&gt;  ...write a function that generates accumulators-- a function that takes a number n, and returns a function that takes another number i and returns n incremented by i. &lt;br&gt;   &lt;br&gt;  (That's incremented by, not plus. An accumulator has to accumulate.) &lt;br&gt;  &lt;/blockquote&gt; &lt;br&gt;   &lt;br&gt;  Hint: An example in JavaScript that does this:  &lt;br&gt;   &lt;br&gt;  &lt;pre class="prettyprint"&gt;function foo (n) { return function (i) { return n += i } } &lt;/pre&gt; &lt;br&gt;   &lt;br&gt;  P.S. The vbscript solution I have does this in 14 lines of code. Can yours do better? &lt;br&gt;   &lt;br&gt;  I can't wait to see the magic people come up with on this one. </description><link>http://www.visualbasicscript.com/fb.ashx?m=58793</link><pubDate>Thu, 03 Apr 2008 22:46:44 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (ehvbs)</title><description>  Hi all challengees, &lt;br&gt;   &lt;br&gt;  I should have posted some more challenges, but I got the impression that the interest &lt;br&gt;  in this topic kind of declined. Perhaps having just one sort of challenge (mine) and the &lt;br&gt;  size of the thread are to blame. If you think that doing it in a separate forum would &lt;br&gt;  improve traffic/quality/fun, please say so at &lt;br&gt;   &lt;br&gt;  &amp;nbsp; &lt;a href="http://www.visualbasicscript.com/fb.aspx?m=53664" target="_blank" rel="nofollow"&gt;http://www.visualbasicscript.com/fb.aspx?m=53664&lt;/a&gt; &lt;br&gt;   &lt;br&gt;  If you think it worthwhile to continue here: &lt;br&gt;   &lt;br&gt;  Rework DiGiTAL.SkReAM's script to find the two last modified files &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp; &lt;a href="http://www.visualbasicscript.com/fb.aspx?m=53877" target="_blank" rel="nofollow"&gt;http://www.visualbasicscript.com/fb.aspx?m=53877&lt;/a&gt; &lt;br&gt;   &lt;br&gt;  so that &lt;br&gt;   &lt;br&gt;  &amp;nbsp; (1) find is not needed &lt;br&gt;   &lt;br&gt;  &amp;nbsp; (2) the 'trimming' of the array is not needed &lt;br&gt;   &lt;br&gt;  &amp;nbsp; (3) it can be used to search a subdirectory tree &lt;br&gt;   &lt;br&gt;  Good luck! &lt;br&gt;   &lt;br&gt;  ehvbs &lt;br&gt;   &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=53882</link><pubDate>Thu, 29 Nov 2007 01:31:15 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (ehvbs)</title><description>  Hi dm_4ever and all other people willing to accept a challenge, &lt;br&gt;   &lt;br&gt;  as to be expected one of the most stalwart contributors to this topic posted &lt;br&gt;  code well worth studying. It won't be a surprise that after seeing the good points &lt;br&gt;  of his approach, I feel inclined to switch to nit picking mode: &lt;br&gt;   &lt;br&gt;  (1) My aim for challenge (a) was to have a single point/ad hoc way of using &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; RegExps in VBScript. In dm_4ever's code you have to look at 2-3 parts of &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; the code (definition of pattern, setting of vbTextCompare/IgnoreCase, and &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; execution) to understand what's going on. I had in mind something like this: &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... code with no reference to the RegExp ... &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If reTest( sTest, &amp;lt;suitable params 01&amp;gt; ) Then &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sRes = reReplace( sTest, &amp;lt;suitable params 02&amp;gt; ) &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sRes = reReplace( sTest, &amp;lt;suitable params 03&amp;gt; ) &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; I admit that using reTest() etc. in a loop - like dm_4ever's test code - isn't &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; the best context to see/demonstrate the usefulness of such functions, because &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; the RegExp would be created for each round. Obviously the object should be &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; created before entering such a loop. That's why I came up with challenge (c). &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; Given such a wrapper class, the instantiation/initialization could occur before &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; the loop and using the object within would be trivial &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim oRE : Set oRE = New cRE.Init( &amp;lt;suitable params&amp;gt; )&amp;nbsp; ' all interesting facts &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' about the RegExp visible &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' here (perhaps including &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' the replacement) &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .... &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sSrc = &amp;lt;whatever&amp;gt; &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sRes = oRE.Replace( sSrc, sRpl ) &lt;br&gt;  Or even &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sRes = oRE.Replace( sSrc ) &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop &lt;br&gt;   &lt;br&gt;  (2) I don't think that the params to GetRegEx() are 'suitable'. It should be possible &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; to specify all properties of the resulting RegExp: &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Global - IgnoreCase - Multiline - Pattern &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; Forcing Global to be True (just to be able to pull the (ingenious) trick of &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; applying the RegExp to its own pattern in CleanRegPattern()) won't do. I'm wondering, &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; whether looking at Perl's specifying such properties by letters/string - gimsx - &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; could be a way. &lt;br&gt;   &lt;br&gt;  (3) For the 'cleaning' of the RegExp's pattern I'm experimenting with: &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set s_reFmtX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = New RegExp &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_reFmtX.Pattern&amp;nbsp;&amp;nbsp; = "(?:\s)|#(?:[\D\d]+?)$" &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_reFmtX.Global&amp;nbsp;&amp;nbsp;&amp;nbsp; = True &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_reFmtX.Multiline = True &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_oRE.Pattern = goReLib.s_reFmtX.Replace( sPattern, "" ) &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; That presupposes using \x20 for space and \23 for # in the readable definition. &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; An example for a complex pattern used to cut text blocks from a longer string/ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; file like &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEGIN_CodeBlock VBSSimpleClass &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ''= §ClassName§ - §ClassPurpose§ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' ============================================================================ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Class §ClassName§ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Class ' §ClassName§ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END_CodeBlock VBSSimpleClass &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEGIN_CodeBlock VBSXplFunc &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' ============================================================================ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goXPLLib.Add _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "§XplFuncName§", "§XplFuncPurpose§" &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' ============================================================================ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Function §XplFuncName§() &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim nRVal : nRVal = 0 &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; §XplFuncName§ = nRVal &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Function &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'NextXplFunc &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END_CodeBlock VBSXplFunc &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set s_reBlocks = New cRE.initPF( Join( Array( _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "^&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # am Anfang der Zeile" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "BEGIN_&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # konstanter erster Teil des Tag" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "(\w+)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # \1: variabler zweiter Teil des Tag " _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "\s+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # whitespace bis zum" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "(\w+)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # \2: Namen des Blocks" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "\r\n&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # neue Zeile vor Block" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "([\D\d]+?)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # $3: Block=WirklichAlles (aber nicht gierig)" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "\r\n&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # neue Zeile vor Block" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "^&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # am Anfang der Zeile" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "END_&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # konstanter erster Teil des Close Tag" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "\1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # \1: zweiter Teils des Close Tag wie oben" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "\s+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # whitespace bis zum" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "\2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # \2: Namen des Blocks" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ), vbLf ), "GiMX" ) &lt;br&gt;   &lt;br&gt;  Eagerly awaiting further solutions ... &lt;br&gt;   &lt;br&gt;  ehvbs &lt;br&gt;  &amp;nbsp; </description><link>http://www.visualbasicscript.com/fb.ashx?m=52504</link><pubDate>Sun, 07 Oct 2007 05:57:56 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (dm_4ever)</title><description>  Still work in progress... &lt;br&gt;   &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 Option Explicit
 
 RegExTest()
 
 Sub RegExTest()
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Dim strRegPattern : strRegPattern = Join(Array("^&amp;nbsp; # start of string", _
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "[a-zA-Z]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # any letter", _
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "[\w\.\-]*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # any letter/number/underscore, period, hyphen; occuring 0x or more", _
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "\d{2}&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 2 numbers", _
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "@&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # literal @ character", _
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "\w+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # any letter/number/underscore; occuring 1x or more", _
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "\.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # period", _
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "[a-zA-Z]+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # any letter; occuring 1x or more", _
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # end of String"), VbCrLf)
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Dim RegEx : Set RegEx = GetRegEx(strRegPattern, vbTextCompare)
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Dim arrTemp : arrTemp = Array("asndaisdnas@as-d.com", "asndaisdnas@asd.com", _
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "asndaisdnas123@asd.com", "as.nda_isdnas@asd.com", _
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "asn90d.aisd_nas12@as-d.com", "asnd.aisd_nas12@asd.com", _
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "asn3d.a8isd_nas12@asd.com")
 &amp;nbsp;&amp;nbsp; Dim strTemp
 &amp;nbsp;&amp;nbsp; For Each strTemp In arrTemp 
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo strTemp &amp;amp; Space(30 - Len(strTemp)) &amp;amp; CStr(RegEx.Test(strTemp))
 &amp;nbsp;&amp;nbsp; Next
 End Sub
 
 Function GetRegEx(strPattern, vbCompare)
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Dim RegEx : Set RegEx = New RegExp
 &amp;nbsp;&amp;nbsp;&amp;nbsp; RegEx.Global = True
 &amp;nbsp;&amp;nbsp;&amp;nbsp; RegEx.Pattern = CleanRegPattern(RegEx, strPattern)
 &amp;nbsp;&amp;nbsp;&amp;nbsp; RegEx.IgnoreCase = (vbTextCompare = vbCompare)
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Set GetRegEx = RegEx
 End Function
 
 Function CleanRegPattern(RegEx, strPattern)
 &amp;nbsp;&amp;nbsp;&amp;nbsp; RegEx.Pattern = "\s+#\s*.*\n?|\s*\n?"
 &amp;nbsp;&amp;nbsp;&amp;nbsp; CleanRegPattern = RegEx.Replace(strPattern, "")
 End Function
 &lt;/pre&gt; &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=52468</link><pubDate>Fri, 05 Oct 2007 07:18:35 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (TNO)</title><description>  I've been away from the vbs language a bit (lots of JavaScript development), so I'm playing catch up yet again.  The XML concept I'm still considering. I'm curious if it its plausible to create a vbscript equivalent of E4X.  &lt;br&gt;  &lt;a href="http://www.w3schools.com/e4x/default.asp" target="_blank" rel="nofollow"&gt;http://www.w3schools.com/e4x/default.asp&lt;/a&gt; &lt;br&gt;   &lt;br&gt;  The only thing thats looking difficult is inline XML in the code. But even if we treated the XML in a separate String/file. I think creating a parsed String object of sorts could work. Efficiency wise this will be questionable to say the least when you get to even larger XML docs. (unless we resort to some sort of &lt;a href="http://en.wikipedia.org/wiki/Simple_API_for_XML" target="_blank" rel="nofollow"&gt;SAX&lt;/a&gt; to save memory) </description><link>http://www.visualbasicscript.com/fb.ashx?m=52338</link><pubDate>Sun, 30 Sep 2007 13:00:55 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (ehvbs)</title><description>  Hi dm_4ever, &lt;br&gt;   &lt;br&gt;  your explanation/specification is a very good example: &lt;br&gt;   &lt;br&gt;  &amp;nbsp; Dim oRE : Set oRE = New RegExp &lt;br&gt;  &amp;nbsp; oRE.Pattern = rePattern( Array( _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "^&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # start of string" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "[a-zA-Z]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # any letter" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "[\w\.\-]*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # any letter/number/underscore, period, hyphen; occuring 0x or more" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "\d{2}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 2 numbers" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "@&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # literal @ character" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "\w+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # any letter/number/underscore; occuring 1x or more" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "\.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # period" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "[a-zA-Z]+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # any letter; occuring 1x or more" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # end of string" _ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ), vbLf ) &lt;br&gt;   &lt;br&gt;  I just changed - to # to make it more compatible to Perl: &lt;br&gt;   &lt;br&gt;  Long regexps like this may impress your friends, but can be hard to  &lt;br&gt;  decipher. In complex situations like this, the //x modifier for a  &lt;br&gt;  match is invaluable. It allows one to put nearly arbitrary whitespace  &lt;br&gt;  and comments into a regexp without affecting their meaning. Using it,  &lt;br&gt;  we can rewrite our 'extended' regexp in the more pleasing form &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp; /^ &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [+-]?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # first, match an optional sign &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # then match integers or f.p. mantissas: &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \d+\.\d+&amp;nbsp; # mantissa of the form a.b &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |\d+\.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # mantissa of the form a. &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |\.\d+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # mantissa of the form .b &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |\d+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # integer of the form a &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ([eE][+-]?\d+)?&amp;nbsp; # finally, optionally match an exponent &lt;br&gt;  &amp;nbsp;&amp;nbsp; $/x; &lt;br&gt;   &lt;br&gt;  (cited from perlretut) &lt;br&gt;   &lt;br&gt;   &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=52269</link><pubDate>Thu, 27 Sep 2007 11:43:19 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (dm_4ever)</title><description>  I wonder if anyone is biting and working on this on?&lt;img src="http://www.visualbasicscript.com/upfiles/smiley/s10.gif" alt="" /&gt;&amp;nbsp; I had a question about (b)&amp;nbsp; "pattern specs in a nice format"...can you show an example of how that would look?&amp;nbsp; Is it patterns listed or plain language or patterns with comments? &lt;br&gt;   &lt;br&gt;   &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=52266</link><pubDate>Thu, 27 Sep 2007 10:47:30 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (ehvbs)</title><description>  Hi all who would like another challenge! &lt;br&gt;   &lt;br&gt;  Once again, I failed to choose a problem/topic that caught your interest. I &lt;br&gt;  hope, this time I will be more lucky. &lt;br&gt;   &lt;br&gt;  RegExps are much easier to use/maintain in other programming languages. You &lt;br&gt;  need about five lines to setup a RegExp for use in VBScript: &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp; Dim RegEx : Set RegEx = New RegExp &lt;br&gt;  &amp;nbsp;&amp;nbsp; RegEx.Pattern = "^[a-zA-Z][\w\.\-]*\d{2}@\w+\.[a-zA-Z]+$" &lt;br&gt;  &amp;nbsp;&amp;nbsp; RegEx.IgnoreCase = True &lt;br&gt;  &amp;nbsp;&amp;nbsp; RegEx.Global = True &lt;br&gt;  &amp;nbsp;&amp;nbsp; RegEx.Multiline = False &lt;br&gt;  &amp;nbsp;&amp;nbsp; Dim sRpl : sRpl = "replacement" &lt;br&gt;   &lt;br&gt;  In Perl this could be done 'on the fly' in a one line expression. The .NET &lt;br&gt;  RegExps can be specified in an easy to read format (Option: IgnorePatternWhitespace). &lt;br&gt;  See &lt;br&gt;   &lt;br&gt;  &amp;nbsp; &lt;a href="http://www.visualbasicscript.com/fb.aspx?m=52097" target="_blank" rel="nofollow"&gt;http://www.visualbasicscript.com/fb.aspx?m=52097&lt;/a&gt; &lt;br&gt;   &lt;br&gt;  where dm_4ever had to provide the specification/definition &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; ^&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - start of string &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; [a-zA-Z]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - any letter &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; [\w\.\-]*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - any letter/number/underscore, period, hyphen; occuring 0x or more &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; \d{2}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 2 numbers &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; @&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - literal @ character &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; \w+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - any letter/number/underscore; occuring 1x or more &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; \.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - period &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; [a-zA-Z]+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - any letter; occuring 1x or more &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; $&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - end of string &lt;br&gt;   &lt;br&gt;  for the pattern &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; "^[a-zA-Z][\w\.\-]*\d{2}@\w+\.[a-zA-Z]+$" &lt;br&gt;   &lt;br&gt;  as an 'extra'. Wouldn't it be nice to assign the .Pattern from such a definiton? &lt;br&gt;  No more worries about discrepancies between code and comment/specs! &lt;br&gt;   &lt;br&gt;  The standard level challenge: &lt;br&gt;   &lt;br&gt;  &amp;nbsp; (a) Write a set of functions that can be used like this: &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim sSrc : sSrc = "some string to work with" &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If reTest( sSrc, &amp;lt;list of suitable params&amp;gt; ) Then &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim oMTS : Set oMTS = reExecute( sSrc, &amp;lt;list of suitable params&amp;gt; ) &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim sTgt : sTgt = reReplace( sSrc, "replacement", &amp;lt;list of suitable params&amp;gt; ) &lt;br&gt;   &lt;br&gt;  &amp;nbsp; (b) Write a function that takes an easy to read pattern and transforms it into &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the condensed format the RegExp can work with: &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oRE.Pattern = rePattern( &amp;lt;pattern specs in a nice format akin to dm_4ever's sample&amp;gt; ) &lt;br&gt;   &lt;br&gt;  The advanced level challenge: &lt;br&gt;   &lt;br&gt;  &amp;nbsp; (c) Write a (wrapper) class that provides at least the functionality of (a) &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and (b) &lt;br&gt;   &lt;br&gt;  By the way: If you are interested in RegExps you surely know about mikeock's &lt;br&gt;  RegexTester &lt;br&gt;   &lt;br&gt;  &amp;nbsp;&amp;nbsp; &lt;a href="http://www.visualbasicscript.com/fb.aspx?m=42269" target="_blank" rel="nofollow"&gt;http://www.visualbasicscript.com/fb.aspx?m=42269&lt;/a&gt; &lt;br&gt;   &lt;br&gt;  In addition you may want to look at &lt;br&gt;   &lt;br&gt;  &amp;nbsp; &lt;a href="http://erik.eae.net/playground/regexp/regexp.html" target="_blank" rel="nofollow"&gt;http://erik.eae.net/playground/regexp/regexp.html&lt;/a&gt; &lt;br&gt;   &lt;br&gt;  for a very nice presentation of the results. &lt;br&gt;   &lt;br&gt;  ehvbs &lt;br&gt;   &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=52161</link><pubDate>Mon, 24 Sep 2007 08:14:42 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (dm_4ever)</title><description>  Thanks for the compliments ehvbs.&amp;nbsp; I have taken many of the slight changes/suggestions you made and incorporated into mine. </description><link>http://www.visualbasicscript.com/fb.ashx?m=51271</link><pubDate>Tue, 28 Aug 2007 17:59:16 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (ehvbs)</title><description>  Hi all who can be lured into feeling challenged! &lt;br&gt;   &lt;br&gt;  After having my nit picking way with dm_4ever's code: &lt;br&gt;   &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 ' Sorry, try as I might, I can't find anything wrong this:
 Option Explicit
 
 ' I prefer returning an errorlevel explicitly; hence the function
 WScript.Quit Main()
 
 ' note the parameter list () in dm_4ever's original code: Sub Main()
 Function Main()
 &amp;nbsp;&amp;nbsp; Dim nRVal : nRVal = 0&amp;nbsp; ' not really used here
 &amp;nbsp;&amp;nbsp; ' I'd like to allow for the -e mode/version too
 &amp;nbsp;&amp;nbsp; Dim sArgs : sArgs = collectArgs()
 &amp;nbsp;&amp;nbsp; If InStr( 1, WScript.FullName, "wscript", vbTextCompare ) Then
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim sCmd : sCmd = "%comspec% /c cscript.exe " + WScript.ScriptFullName
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If "" &amp;lt;&amp;gt; sArgs Then
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' to keep the dos box open for -e mode
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sCmd = Replace( sCmd, "/c", "/k" ) + " """ + sArgs + """"
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox sCmd
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' No need for the just once used variable objShell
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CreateObject( "WScript.Shell" ).Run sCmd, 1, False
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Quit
 &amp;nbsp;&amp;nbsp; End If
 &amp;nbsp;&amp;nbsp; If "" &amp;lt;&amp;gt; sArgs Then
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Restricting the ' for " trick for the -e version
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sArgs = Replace( sArgs, "'", """" )
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handleCode sArgs
 &amp;nbsp;&amp;nbsp; Else
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' keeping different levels apart
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisplayHeader
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StartShell
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisplayFooter
 &amp;nbsp;&amp;nbsp; End If
 &amp;nbsp;&amp;nbsp; Main = nRVal
 End Function
 
 ' I prefer to follow the VBScript Docs:
 '&amp;nbsp;&amp;nbsp;&amp;nbsp; If a Sub procedure has no arguments, its Sub statement must
 '&amp;nbsp;&amp;nbsp;&amp;nbsp; include an empty set of parentheses ().
 ' It's more compatible with other programming languages I use and
 ' I don't think there is anything to gain from economizing here.
 Sub StartShell()
 &amp;nbsp;&amp;nbsp; ' moved one level up: DisplayHeader
 &amp;nbsp;&amp;nbsp; ' Nothing to count, just interested in boolean continue or not
 &amp;nbsp;&amp;nbsp; ' Dim intLCount : intLCount = 0
 &amp;nbsp;&amp;nbsp; Dim bContinue : bContinue = True
 &amp;nbsp;&amp;nbsp; Dim strInputCode, strCode
 &amp;nbsp;&amp;nbsp; Do
 '&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do Until intLCount = 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do While bContinue
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' prompting here makes a nicer lineup
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.StdOut.Write "&amp;gt;&amp;gt; "
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' not needed here, no command line around that could steal "
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' strInputCode = Replace(WScript.StdIn.ReadLine, "'", """")
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strInputCode = WScript.StdIn.ReadLine
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select Case UCase(strInputCode)
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' avoid multiple exits/ bypassing main: instead of WScript.Quit
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case "EXIT", "QUIT"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Select
 
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If strInputCode = "" Then
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bContinue = False
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strCode = strCode &amp;amp; strInputCode &amp;amp; ":"
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; handleCode strCode
 
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bContinue = True
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strCode&amp;nbsp;&amp;nbsp; = ""
 &amp;nbsp;&amp;nbsp; Loop
 End Sub
 
 Sub DisplayHeader()
 &amp;nbsp;&amp;nbsp; Dim intSpacers : intSpacers = 50
 &amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine String(intSpacers, "#")
 &amp;nbsp;&amp;nbsp; Dim strMsg : strMsg = "VBScript Shell v1.0"
 &amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine Space((intSpacers - Len(strMsg)) / 2) &amp;amp; strMsg
 &amp;nbsp;&amp;nbsp; strMsg = "Type 'Exit' or 'Quit' to exit"
 &amp;nbsp;&amp;nbsp; '
 &amp;nbsp;&amp;nbsp; ' WScript.StdOut.WriteLine Space((intSpacers - Len(strMsg)) / 2) &amp;amp; "Type 'Exit' or 'Quit' to exit"
 &amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine Space((intSpacers - Len(strMsg)) / 2) &amp;amp; strMsg
 &amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine String(intSpacers, "#")
 End Sub
 
 Sub DisplayFooter()
 &amp;nbsp;&amp;nbsp; Dim intSpacers : intSpacers = 50
 &amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine String(intSpacers, "#")
 &amp;nbsp;&amp;nbsp; Dim strMsg : strMsg = "Done"
 &amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine Space((intSpacers - Len(strMsg)) / 2) &amp;amp; strMsg
 &amp;nbsp;&amp;nbsp; strMsg = "!! Thanks dm_4ever !!"
 &amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine Space((intSpacers - Len(strMsg)) / 2) &amp;amp; strMsg
 &amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine String(intSpacers, "#")
 End Sub
 
 '' collect WScript.Arguments into a string
 '============================================================================
 Function collectArgs()
 &amp;nbsp; Dim sRVal : sRVal = ""
 &amp;nbsp; Dim sArg
 &amp;nbsp; For Each sArg In WScript.Arguments
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Against the VBScript rules, I use + to concatenate strings;
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' reserving &amp;amp; for concatenating other=automatically converted
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' values into a string
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sRVal = sRVal + " " + sArg
 &amp;nbsp; Next
 &amp;nbsp; collectArgs = Trim( sRVal )
 End Function
 
 '' execute strCode
 '============================================================================
 Sub handleCode( strCode )
 On Error Resume Next
 &amp;nbsp;&amp;nbsp; Execute strCode
 &amp;nbsp;&amp;nbsp; If Err.Number &amp;lt;&amp;gt; 0 Then
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine "Error Number:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " &amp;amp; Err.Number
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine "Error Description:&amp;nbsp; " &amp;amp; Err.Description
 &amp;nbsp;&amp;nbsp; End If
 &amp;nbsp;On Error GoTo 0
 End Sub
 &lt;/pre&gt; &lt;br&gt;   &lt;br&gt;  Sample output: &lt;br&gt;   &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 cscript dm401.vbs
 ##################################################
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VBScript Shell v1.0
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type 'Exit' or 'Quit' to exit
 ##################################################
 &amp;gt;&amp;gt; For i = o To 2
 &amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; WScript.Echo i, "didn't replace ' with """
 &amp;gt;&amp;gt; Next
 &amp;gt;&amp;gt;
 0 didn't replace ' with "
 1 didn't replace ' with "
 2 didn't replace ' with "
 &amp;gt;&amp;gt; exit
 ##################################################
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Done
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !! Thanks dm_4ever !!
 ##################################################
 
 cscript dm401.vbs "WScript.Echo 'Hello ' &amp;amp; Now"
 Hello 28.08.2007 23:19:26
 &lt;/pre&gt; &lt;br&gt;   &lt;br&gt;  I have some sub challenges for you: &lt;br&gt;   &lt;br&gt;  (1) By changing intLCount to bContinue I could simplify the &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; logic in the nested "collect lines" loop. Can you eliminate &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; bContinue? &lt;br&gt;  &amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br&gt;  (2) dm_4ever took pains to avoid global variables by structuring &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; his script in a way I consider exemplary: He put all his code &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; in Subs. By adding the Sub DisplayFooter() - just to emphasize &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; that displaying a header, handling the interactive input, and &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; displaying a footer are three sub problems/tasks of the  &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; embracing problem/task of the script as a whole - I caused a  &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; mess: a typical result of 'programming by copy, paste &amp;amp; edit'.  &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; The fact that the length (intSpacers) and the form (#) of the  &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; rulers must be the same in both Subs is ensured by accident only.  &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; Yes, I consider the programmer's memory, dilligence, and prudence  &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; as random factors (memory isn't called RAM for nothing). Can you  &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; come up with a nice way to carve those invariants in stone/code? &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;  (3) For the .HTA aficionados: While asking for a .HTA implementation &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; of "Interactive VBScript" may be a bit brazen, but just thinking &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; about it will make a problem obvious that was often discussed &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; on this forum: How do you handle code that (would like to) use  &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript in an .HTA/.HTML script? Can you come up with an .HTA &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; that contains something like the Sub handleCode()? &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;  (4) Last but not least: Something for VBScript learners to sharpen &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; their teeth on. How about a version of Sub DisplayHeader() &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; and/or DisplayFooter() that outputs additional information &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; about the language's/Host's/Operating System's version or a &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; copyright in a pleasant layout? Something that could be reused  &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; in other command line (cscript) scripts? &lt;br&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;  Thanks for your interest &amp;amp; extra "Hut ab" (kudos) to dm_4ever! &lt;br&gt;   &lt;br&gt;  ehvbs&amp;nbsp;&amp;nbsp;&amp;nbsp;  &lt;br&gt;  &amp;nbsp; </description><link>http://www.visualbasicscript.com/fb.ashx?m=51268</link><pubDate>Tue, 28 Aug 2007 15:01:51 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (dm_4ever)</title><description>  Put this in bits and pieces while at work...works with multi-lines...you'll need to press "Enter" twice for your code to be evaluated. Used ehvbs method of handeling Chr(39) 'single quote' &lt;br&gt;   &lt;br&gt;   &lt;br&gt;   &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 Option Explicit
 
 Main
 
 Sub Main()
 &amp;nbsp;&amp;nbsp;&amp;nbsp; If InStr(1, WScript.FullName, "wscript", vbTextCompare) Then
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Dim objShell : Set objShell = CreateObject("WScript.Shell")
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; objShell.Run "%comspec% /c cscript.exe " &amp;amp; WScript.ScriptFullName, 1, False
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Quit
 &amp;nbsp;&amp;nbsp;&amp;nbsp; End If
 &amp;nbsp;&amp;nbsp;&amp;nbsp; StartShell
 End Sub
 
 Sub StartShell
 &amp;nbsp;&amp;nbsp;&amp;nbsp; DisplayHeader&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Dim intLCount : intLCount = 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Dim strInputCode, strCode
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Do
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.StdOut.Write "&amp;gt;&amp;gt;"
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Do Until intLCount = 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; strInputCode = Replace(WScript.StdIn.ReadLine, "'", """")
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Select Case UCase(strInputCode)
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Case "EXIT", "QUIT"&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Quit
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; End Select
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; If strInputCode = "" Then
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; intLCount = intLCount + 1
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Else
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; intLCount = 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; End If
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; strCode = strCode &amp;amp; strInputCode &amp;amp; ":"
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Loop
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; On Error Resume Next
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Execute strCode
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; If Err.Number &amp;lt;&amp;gt; 0 Then
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine "Error Number:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " &amp;amp; Err.Number
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine "Error Description:&amp;nbsp; " &amp;amp; Err.Description
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; End If
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; On Error GoTo 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; intLCount = 0
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; strCode = ""
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Loop
 End Sub
 
 Sub DisplayHeader
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Dim intSpacers : intSpacers = 50
 &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine String(intSpacers, "#")
 &amp;nbsp;&amp;nbsp;&amp;nbsp; Dim strMsg : strMsg = "VBScript Shell v1.0"
 &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine Space((intSpacers - Len(strMsg)) / 2) &amp;amp; strMsg
 &amp;nbsp;&amp;nbsp;&amp;nbsp; strMsg = "Type 'Exit' or 'Quit' to exit"
 &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine Space((intSpacers - Len(strMsg)) / 2) &amp;amp; "Type 'Exit' or 'Quit' to exit"
 &amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.StdOut.WriteLine String(intSpacers, "#")
 End Sub
 &lt;/pre&gt; &lt;br&gt;   &lt;br&gt;  Example output: &lt;br&gt;  &lt;pre class="prettyprint"&gt;
 C:\&amp;gt;cscript.exe C:\scripts\VBScript_CmdShell.vbs
 ##################################################
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VBScript Shell v1.0
 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type 'Exit' or 'Quit' to exit
 ##################################################
 &amp;gt;&amp;gt;For i = 0 to 10
 wscript.echo i
 next
 
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 &amp;gt;&amp;gt;
 &lt;/pre&gt; &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=51215</link><pubDate>Mon, 27 Aug 2007 17:45:52 GMT</pubDate></item><item><title> RE: Weekly/Monthly Challenge? (ehvbs)</title><description>  Hi DiGiTAL.SkReAM, &lt;br&gt;   &lt;br&gt;  thanks for the quick way to skin the cat without WMI; now your script runs on my W2K  &lt;br&gt;  computer. &lt;br&gt;   &lt;br&gt;  I think your argument "... you might as well open notepad and write a script.&amp;nbsp; It'd be easier  &lt;br&gt;  and faster. " is valid. But I meant these challenges not so much as rivals to the "Post your &lt;br&gt;  Script" forum, but as opportunities to ty out/discuss techniques and concepts. The first &lt;br&gt;  versions of VBScript/WSH didn't give access to StdIn/StdOut, so there isn't much code  &lt;br&gt;  around that uses the command line interactively (.HTAs are more convient too). But if &lt;br&gt;  you look at tools like mysql.exe, o/isql.exe, ... you might agree that a script that can &lt;br&gt;  work on StdIn either interactively or via pipe/redirection could be attractive. &lt;br&gt;   &lt;br&gt;  Regards &lt;br&gt;   &lt;br&gt;  ehvbs &lt;br&gt;   &lt;br&gt;   </description><link>http://www.visualbasicscript.com/fb.ashx?m=51206</link><pubDate>Mon, 27 Aug 2007 13:36:59 GMT</pubDate></item></channel></rss>
