Advertisement
omegastripes

NumberStroki.vbs

Apr 9th, 2014
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Option Explicit
  2. NumberStrokiInit() ' всегда в самом начале скрипта
  3.  
  4. MsgBox NumberStroki()
  5. MsgBox NumberStroki()
  6. If NumberStroki = 6 Then MsgBox "Line = " & NumberStroki
  7. MsgBox NumberStroki()
  8. MsgBox NumberStroki()
  9.  
  10. Sub NumberStrokiInit()
  11.     Dim strCode, objReplace, lngLine, arrCode, strCmdLn, strArg
  12.     With CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.ScriptFullName, 1)
  13.         strCode = .ReadAll
  14.         .Close
  15.     End With
  16.     ExecuteGlobal "Function Number" & "Stroki(n): Number" & "Stroki = n: End Function"
  17.     Execute "Class clsReplace: Public lngLine, bMod: Public Default Function fReplace(strMatch, strSubMatch, lngPos, strSource): On Error Resume Next: If Eval(strSubMatch) <> lngLine Then fReplace = Replace(strMatch, strSubMatch, ""NumberStroki("" & lngLine & "")""): bMod = True Else fReplace = strMatch: End If: End Function: End Class"
  18.     Set objReplace = New clsReplace
  19.     objReplace.bMod = False
  20.     arrCode = Split(strCode, vbCrLf)
  21.     With New RegExp
  22.         .Pattern = "\b(Number" & "Stroki\ {0,}(?:|\( {0,}(?:|""[\w ]{0,}""|[A-Za-z_]{1,}\w{0,}|\d{1,}) {0,}\)))\ {0,}(?:[><+*\\/\-\^':=&\r\n]|$)"
  23.         .Global = True
  24.         .IgnoreCase = True
  25.         For lngLine = 0 To Ubound(arrCode)
  26.             objReplace.lngLine = lngLine + 1
  27.             arrCode(lngLine) = .Replace(arrCode(lngLine), objReplace)
  28.         Next
  29.     End With
  30.     strCode = Join(arrCode, vbCrLf)
  31.     If objReplace.bMod Then
  32.         With CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.ScriptFullName, 2, True)
  33.             .Write strCode
  34.             .Close
  35.         End With
  36.         strCmdLn = WScript.FullName & " """ & WScript.ScriptFullName & """"
  37.         For Each strArg In WScript.Arguments
  38.             strCmdLn = strCmdLn & " """ & strArg & """"
  39.         Next
  40.         CreateObject("WScript.Shell").Run strCmdLn
  41.         WScript.Quit
  42.     End If
  43. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement