User ID:
Password:
Remember Me:
Forgot Password?
Not a member?
Click here for more information and to register.

    An Automatic Build Incrementer for VC6



    Environment: Visual C++ 6.0

    Visual Basic programmers have long had the ability to automatically increment the build number each time the program was compiled. Visual C++ programmers haven't.

    Several weeks ago, I started trying to find a way to do automatically increment build numbers on each compile. I found several articles on the subject and some source code but none of it did exactly what I wanted it to do, so I decided to write my own incrementer.

    Add the code to an existing macro file or, if you don't have an existing macro file, create one and add one dummy macro so you can access the code snippet. Application_BeforeBuildStart() is a Visual Studio defined event handler and although the code is in a macro file, when you select the Tools|Macro menu item, you won't see it, so you need at least a dummy macro in the file to access the source code.

    Note that these code snippets have been subjected to limited testing and that you use them at your own risk. They work correctly in the test environment, but you assume all risk for their use. I will not assume any liability whatsoever for their failure to work correctly in your environment.

    Please e-mail any comments, suggestions for improvement, problems, etc. to me.

    Sub Application_BeforeBuildStart()
     ' written 7/11/00 by CCB Consulting
     ' e-mail any comments, corrections, etc. to support@ccbcon.com
     ' updated versions will be at www.ccbcon.com on the Code Snippets page
     ' invoked automatically before build starts
     ' will open the project's *.rc file as text
     ' will search for the version info
     ' and will increment the build number
    
     dim oDoc
     dim sBuild
     dim sRCFile
     dim sOne
     dim sTwo
     dim iSelect
     dim lLineNbr
     dim bFound
    
     'get the name of the active project's .rc file
     sRCFile = application.activeproject & ".rc"
    
     'open *.rc file as text
     set oDoc = Documents.Open(sRCFile, "Text")
    
     'position to the correct section of the file
     oDoc.Selection.FindText " FILEVERSION", dsMatchCase
     'save the line number for the next search
     lLineNbr = oDoc.Selection.CurrentLine
    
     'use a regular expression search string for the first version search
     sOne = "[0-9]+,[0-9]+,[0-9]+,"
    
     'find the first string
     oDoc.Selection.FindText sOne, dsMatchRegExp
    
     if oDoc.Selection.CurrentLine = lLineNbr then
      'convert the regular expression to an absolute search string
      sOne = oDoc.Selection
    
      'build an absolute search string for the strings with embedded spaces
      sTwo = Replace(sOne, ",", ", ")
    
      'move to the build number
      oDoc.Selection.CharRight
    
      'select the build number
      oDoc.Selection.WordRight dsExtend
    
      'increment the build number
      sBuild = oDoc.Selection + 1
    
      'replace the old build number with the new one
      oDoc.Selection = sBuild
    
      else 'something went wrong
       msgbox "Version number 1 not found. Closing without changes."
    
       oDoc.Close dsSaveChangesNo
    
       set oDoc = nothing
    
       exit sub
     end if
    
     'now change the other 3 occurences of the build number
     for iSelect = 2 to 4
      if iSelect = 2 then 
       bFound = oDoc.Selection.FindText(sOne)
      else
       bFound = oDoc.Selection.FindText(sTwo)
      end if
    
      oDoc.Selection.CharRight
      oDoc.Selection.WordRight dsExtend
      oDoc.Selection = sBuild
    
      if bFound = False then
       msgbox "Version number " & iSelect & " not found. Closing without changes."
       oDoc.Close dsSaveChangesNo
       set oDoc = nothing
       exit sub
      end if
     next
    
     'close and save *.rc
     oDoc.Close dsSaveChangesYes
    
     set oDoc = nothing
    End Sub
    

    Downloads

    Download source - 2 Kb

    IT Offers


    Top Authors