<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: API - Doug's checksum function doesn't seem to work for me in Vault Customization Forum</title>
    <link>https://forums.autodesk.com/t5/vault-customization-forum/api-doug-s-checksum-function-doesn-t-seem-to-work-for-me/m-p/3171410#M12683</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm interested in reusing the converted class you posted, but something has gone wrong in the upload - any chance you can post the actual .vb class file?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, I'm using Vault Professional 2012 and can't find any mention of the getcrc32 class you mention in the VaultMirror solution files?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Alex.&lt;/P&gt;</description>
    <pubDate>Tue, 27 Sep 2011 12:50:38 GMT</pubDate>
    <dc:creator>AlexFielder</dc:creator>
    <dc:date>2011-09-27T12:50:38Z</dc:date>
    <item>
      <title>API - Doug's checksum function doesn't seem to work for me</title>
      <link>https://forums.autodesk.com/t5/vault-customization-forum/api-doug-s-checksum-function-doesn-t-seem-to-work-for-me/m-p/3093818#M12680</link>
      <description>&lt;P&gt;I'm developing an app (for Vault 2011) that compares the the checksum of a file in the vault against the same file locally (equivalent paths).&amp;nbsp; I've used a web site to converted Doug's CalcCRC32 function (from VaultMirror) from C# to VB.NET.&amp;nbsp;&lt;/P&gt;&lt;P&gt;There are 2 problems.&amp;nbsp; CalcCRC32 is designed to returns an integer but sometime the number is larger than an Integer can hold (see 1st image below).&amp;nbsp; Changing CalcCRC32 to return a Long will stop the error from occuring but I'm not sure if I should.&amp;nbsp; The other problem is, for a file I just brought down from the vault, CalcCRC32 does not return the same checksum as the File in the vault (see the 2nd image below).&amp;nbsp; The 1st number in the MsgBox is the checksum from the vault and the 2nd number is from CalcCRC32.&amp;nbsp; Don't let the asterisk next to BJR-2005.idw fool you, I haven't changed anything (common ?Inventor problem).&amp;nbsp; All the code is in the 3rd image below.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Did the conversion from C# to VB.NET go wrong or is there a flaw in the code?&amp;nbsp;&amp;nbsp; Should CalcCRC32 return a Long?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;IMG alt="!temp2.jpg" src="http://forums.autodesk.com/t5/image/serverpage/image-id/10662i0D452A9E7573DB48/image-size/original?v=mpbl-1&amp;amp;px=-1" align="center" title="!temp2.jpg" border="0" /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;IMG alt="!temp1.jpg" src="http://forums.autodesk.com/t5/image/serverpage/image-id/10666iA49CDE0690EF9E3A/image-size/original?v=mpbl-1&amp;amp;px=-1" align="center" title="!temp1.jpg" border="0" /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;Imports Autodesk.Connectivity.WebServices
Imports System.IO

Public Class Form1

    Private moSecSvc As Autodesk.Connectivity.WebServices.SecurityService
    Private moDocSvc As Autodesk.Connectivity.WebServices.DocumentService
    Private Const HOST As String = "L1429783"
    Private goInvApp As Inventor.Application
    Private goActiveDocument As Inventor.Document
    Private Shared MAX_FILE_SIZE As Long = 50 * 1024 * 1024    ' 50 MB 
    Private Const m_chunkSize As Integer = 16384
    Private Shared m_crc_32_tab As UInteger() = { _
         &amp;amp;H0, &amp;amp;H77073096, &amp;amp;HEE0E612CUI, &amp;amp;H990951BAUI, &amp;amp;H76DC419, &amp;amp;H706AF48F, _
         &amp;amp;HE963A535UI, &amp;amp;H9E6495A3UI, &amp;amp;HEDB8832, &amp;amp;H79DCB8A4, &amp;amp;HE0D5E91EUI, &amp;amp;H97D2D988UI, _
         &amp;amp;H9B64C2B, &amp;amp;H7EB17CBD, &amp;amp;HE7B82D07UI, &amp;amp;H90BF1D91UI, &amp;amp;H1DB71064, &amp;amp;H6AB020F2, _
         &amp;amp;HF3B97148UI, &amp;amp;H84BE41DEUI, &amp;amp;H1ADAD47D, &amp;amp;H6DDDE4EB, &amp;amp;HF4D4B551UI, &amp;amp;H83D385C7UI, _
         &amp;amp;H136C9856, &amp;amp;H646BA8C0, &amp;amp;HFD62F97AUI, &amp;amp;H8A65C9ECUI, &amp;amp;H14015C4F, &amp;amp;H63066CD9, _
         &amp;amp;HFA0F3D63UI, &amp;amp;H8D080DF5UI, &amp;amp;H3B6E20C8, &amp;amp;H4C69105E, &amp;amp;HD56041E4UI, &amp;amp;HA2677172UI, _
         &amp;amp;H3C03E4D1, &amp;amp;H4B04D447, &amp;amp;HD20D85FDUI, &amp;amp;HA50AB56BUI, &amp;amp;H35B5A8FA, &amp;amp;H42B2986C, _
         &amp;amp;HDBBBC9D6UI, &amp;amp;HACBCF940UI, &amp;amp;H32D86CE3, &amp;amp;H45DF5C75, &amp;amp;HDCD60DCFUI, &amp;amp;HABD13D59UI, _
         &amp;amp;H26D930AC, &amp;amp;H51DE003A, &amp;amp;HC8D75180UI, &amp;amp;HBFD06116UI, &amp;amp;H21B4F4B5, &amp;amp;H56B3C423, _
         &amp;amp;HCFBA9599UI, &amp;amp;HB8BDA50FUI, &amp;amp;H2802B89E, &amp;amp;H5F058808, &amp;amp;HC60CD9B2UI, &amp;amp;HB10BE924UI, _
         &amp;amp;H2F6F7C87, &amp;amp;H58684C11, &amp;amp;HC1611DABUI, &amp;amp;HB6662D3DUI, &amp;amp;H76DC4190, &amp;amp;H1DB7106, _
         &amp;amp;H98D220BCUI, &amp;amp;HEFD5102AUI, &amp;amp;H71B18589, &amp;amp;H6B6B51F, &amp;amp;H9FBFE4A5UI, &amp;amp;HE8B8D433UI, _
         &amp;amp;H7807C9A2, &amp;amp;HF00F934, &amp;amp;H9609A88EUI, &amp;amp;HE10E9818UI, &amp;amp;H7F6A0DBB, &amp;amp;H86D3D2D, _
         &amp;amp;H91646C97UI, &amp;amp;HE6635C01UI, &amp;amp;H6B6B51F4, &amp;amp;H1C6C6162, &amp;amp;H856530D8UI, &amp;amp;HF262004EUI, _
         &amp;amp;H6C0695ED, &amp;amp;H1B01A57B, &amp;amp;H8208F4C1UI, &amp;amp;HF50FC457UI, &amp;amp;H65B0D9C6, &amp;amp;H12B7E950, _
         &amp;amp;H8BBEB8EAUI, &amp;amp;HFCB9887CUI, &amp;amp;H62DD1DDF, &amp;amp;H15DA2D49, &amp;amp;H8CD37CF3UI, &amp;amp;HFBD44C65UI, _
         &amp;amp;H4DB26158, &amp;amp;H3AB551CE, &amp;amp;HA3BC0074UI, &amp;amp;HD4BB30E2UI, &amp;amp;H4ADFA541, &amp;amp;H3DD895D7, _
         &amp;amp;HA4D1C46DUI, &amp;amp;HD3D6F4FBUI, &amp;amp;H4369E96A, &amp;amp;H346ED9FC, &amp;amp;HAD678846UI, &amp;amp;HDA60B8D0UI, _
         &amp;amp;H44042D73, &amp;amp;H33031DE5, &amp;amp;HAA0A4C5FUI, &amp;amp;HDD0D7CC9UI, &amp;amp;H5005713C, &amp;amp;H270241AA, _
         &amp;amp;HBE0B1010UI, &amp;amp;HC90C2086UI, &amp;amp;H5768B525, &amp;amp;H206F85B3, &amp;amp;HB966D409UI, &amp;amp;HCE61E49FUI, _
         &amp;amp;H5EDEF90E, &amp;amp;H29D9C998, &amp;amp;HB0D09822UI, &amp;amp;HC7D7A8B4UI, &amp;amp;H59B33D17, &amp;amp;H2EB40D81, _
         &amp;amp;HB7BD5C3BUI, &amp;amp;HC0BA6CADUI, &amp;amp;HEDB88320UI, &amp;amp;H9ABFB3B6UI, &amp;amp;H3B6E20C, &amp;amp;H74B1D29A, _
         &amp;amp;HEAD54739UI, &amp;amp;H9DD277AFUI, &amp;amp;H4DB2615, &amp;amp;H73DC1683, &amp;amp;HE3630B12UI, &amp;amp;H94643B84UI, _
         &amp;amp;HD6D6A3E, &amp;amp;H7A6A5AA8, &amp;amp;HE40ECF0BUI, &amp;amp;H9309FF9DUI, &amp;amp;HA00AE27, &amp;amp;H7D079EB1, _
         &amp;amp;HF00F9344UI, &amp;amp;H8708A3D2UI, &amp;amp;H1E01F268, &amp;amp;H6906C2FE, &amp;amp;HF762575DUI, &amp;amp;H806567CBUI, _
         &amp;amp;H196C3671, &amp;amp;H6E6B06E7, &amp;amp;HFED41B76UI, &amp;amp;H89D32BE0UI, &amp;amp;H10DA7A5A, &amp;amp;H67DD4ACC, _
         &amp;amp;HF9B9DF6FUI, &amp;amp;H8EBEEFF9UI, &amp;amp;H17B7BE43, &amp;amp;H60B08ED5, &amp;amp;HD6D6A3E8UI, &amp;amp;HA1D1937EUI, _
         &amp;amp;H38D8C2C4, &amp;amp;H4FDFF252, &amp;amp;HD1BB67F1UI, &amp;amp;HA6BC5767UI, &amp;amp;H3FB506DD, &amp;amp;H48B2364B, _
         &amp;amp;HD80D2BDAUI, &amp;amp;HAF0A1B4CUI, &amp;amp;H36034AF6, &amp;amp;H41047A60, &amp;amp;HDF60EFC3UI, &amp;amp;HA867DF55UI, _
         &amp;amp;H316E8EEF, &amp;amp;H4669BE79, &amp;amp;HCB61B38CUI, &amp;amp;HBC66831AUI, &amp;amp;H256FD2A0, &amp;amp;H5268E236, _
         &amp;amp;HCC0C7795UI, &amp;amp;HBB0B4703UI, &amp;amp;H220216B9, &amp;amp;H5505262F, &amp;amp;HC5BA3BBEUI, &amp;amp;HB2BD0B28UI, _
         &amp;amp;H2BB45A92, &amp;amp;H5CB36A04, &amp;amp;HC2D7FFA7UI, &amp;amp;HB5D0CF31UI, &amp;amp;H2CD99E8B, &amp;amp;H5BDEAE1D, _
         &amp;amp;H9B64C2B0UI, &amp;amp;HEC63F226UI, &amp;amp;H756AA39C, &amp;amp;H26D930A, &amp;amp;H9C0906A9UI, &amp;amp;HEB0E363FUI, _
         &amp;amp;H72076785, &amp;amp;H5005713, &amp;amp;H95BF4A82UI, &amp;amp;HE2B87A14UI, &amp;amp;H7BB12BAE, &amp;amp;HCB61B38, _
         &amp;amp;H92D28E9BUI, &amp;amp;HE5D5BE0DUI, &amp;amp;H7CDCEFB7, &amp;amp;HBDBDF21, &amp;amp;H86D3D2D4UI, &amp;amp;HF1D4E242UI, _
         &amp;amp;H68DDB3F8, &amp;amp;H1FDA836E, &amp;amp;H81BE16CDUI, &amp;amp;HF6B9265BUI, &amp;amp;H6FB077E1, &amp;amp;H18B74777, _
         &amp;amp;H88085AE6UI, &amp;amp;HFF0F6A70UI, &amp;amp;H66063BCA, &amp;amp;H11010B5C, &amp;amp;H8F659EFFUI, &amp;amp;HF862AE69UI, _
         &amp;amp;H616BFFD3, &amp;amp;H166CCF45, &amp;amp;HA00AE278UI, &amp;amp;HD70DD2EEUI, &amp;amp;H4E048354, &amp;amp;H3903B3C2, _
         &amp;amp;HA7672661UI, &amp;amp;HD06016F7UI, &amp;amp;H4969474D, &amp;amp;H3E6E77DB, &amp;amp;HAED16A4AUI, &amp;amp;HD9D65ADCUI, _
         &amp;amp;H40DF0B66, &amp;amp;H37D83BF0, &amp;amp;HA9BCAE53UI, &amp;amp;HDEBB9EC5UI, &amp;amp;H47B2CF7F, &amp;amp;H30B5FFE9, _
         &amp;amp;HBDBDF21CUI, &amp;amp;HCABAC28AUI, &amp;amp;H53B39330, &amp;amp;H24B4A3A6, &amp;amp;HBAD03605UI, &amp;amp;HCDD70693UI, _
         &amp;amp;H54DE5729, &amp;amp;H23D967BF, &amp;amp;HB3667A2EUI, &amp;amp;HC4614AB8UI, &amp;amp;H5D681B02, &amp;amp;H2A6F2B94, _
         &amp;amp;HB40BBE37UI, &amp;amp;HC30C8EA1UI, &amp;amp;H5A05DF1B, &amp;amp;H2D02EF8D}


    Private Sub btnEditedOutOfTurn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEditedOutOfTurn.Click
        moSecSvc = New SecurityService()
        moSecSvc.SecurityHeaderValue = New Autodesk.Connectivity.WebServices.SecuritySvc.SecurityHeader
        moSecSvc.Url = "http://" + HOST + "/AutodeskDM/Services/SecurityService.asmx"

        moSecSvc.SignInReadOnly("Administrator", "", "PCI PS Vault")  '"PCI PS Vault"

        moDocSvc = New DocumentService()
        moDocSvc.SecurityHeaderValue = New Autodesk.Connectivity.WebServices.DocumentSvc.SecurityHeader
        moDocSvc.SecurityHeaderValue.UserId = moSecSvc.SecurityHeaderValue.UserId
        moDocSvc.SecurityHeaderValue.Ticket = moSecSvc.SecurityHeaderValue.Ticket
        moDocSvc.Url = "http://" + HOST + "/AutodeskDM/Services/DocumentService.asmx"

        Dim sLocalRoot As String
        If moDocSvc.GetEnforceWorkingFolder Then
            sLocalRoot = moDocSvc.GetRequiredWorkingFolderLocation
        Else
            'In the future obtain the working folder from the XML file
            sLocalRoot = "C:\Local Workspace"
        End If

        goInvApp = GetObject(, "Inventor.Application")
        goActiveDocument = goInvApp.ActiveDocument

        Dim sRelativePathFile As String
        Dim sVaultPathFile As String
        Dim aoFiles() As Autodesk.Connectivity.WebServices.File
        Dim oFile As Autodesk.Connectivity.WebServices.File
        Dim oAllReferencedDocuments As Inventor.DocumentsEnumerator
        Dim sFile As String

        sFile = goActiveDocument.FullFileName
        sFile = Mid(sFile, InStrRev(sFile, "\") + 1)
        sRelativePathFile = Mid(goActiveDocument.FullFileName, Len(sLocalRoot) + 1)
        sVaultPathFile = Replace("$" &amp;amp; sRelativePathFile, "\", "/")
        Dim asFiles2() As String = {sVaultPathFile}
        aoFiles = moDocSvc.FindLatestFilesByPaths(asFiles2)
        oFile = aoFiles(0)
        MsgBox(sFile &amp;amp; "    " &amp;amp; oFile.Cksum &amp;amp; "    " &amp;amp; CalcCRC32(goActiveDocument.FullFileName))

        goActiveDocument = Nothing
        goInvApp = Nothing
        moSecSvc.SignOut()
    End Sub

    Public Shared Function CalcCRC32(ByVal filename As String) As Long
        Using stream As New FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read, m_chunkSize)
            Return CalcCRC32(stream)
        End Using
    End Function

    Public Shared Function CalcCRC32(ByVal stream As Stream) As Long
        If stream Is Nothing Then
            Throw New Exception("Checksum.CalcCRC32() - Invalid stream")
        End If

        If Not stream.CanRead Then
            Throw New Exception("Checksum.CalcCRC32() - Cannot read stream")
        End If

        Dim crc32 As UInteger = &amp;amp;HFFFFFFFFUI

        stream.Position = 0
        ' beginning
        Dim bytesRead As Integer = 0
        Dim streamData As Byte() = New Byte(m_chunkSize - 1) {}
        Do
            bytesRead = stream.Read(streamData, 0, m_chunkSize)

            For i As Integer = 0 To bytesRead - 1
                crc32 = (m_crc_32_tab((crc32 Xor streamData(i)) And &amp;amp;HFF) Xor (crc32 &amp;gt;&amp;gt; 8))
            Next
        Loop While bytesRead &amp;gt; 0

        stream.Position = 0
        ' reset
        crc32 = Not crc32
        Return CLng(crc32)
    End Function

End Class&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jul 2011 21:04:12 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/vault-customization-forum/api-doug-s-checksum-function-doesn-t-seem-to-work-for-me/m-p/3093818#M12680</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2011-07-15T21:04:12Z</dc:date>
    </item>
    <item>
      <title>Re: API - Doug's checksum function doesn't seem to work for me</title>
      <link>https://forums.autodesk.com/t5/vault-customization-forum/api-doug-s-checksum-function-doesn-t-seem-to-work-for-me/m-p/3094680#M12681</link>
      <description>&lt;P&gt;My guess is that there is a flaw in the conversion.&amp;nbsp; I have two suggestions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp; Check the Autodesk Developer Network to see if they have a VB version of the algorithm.&lt;/P&gt;
&lt;P&gt;2.&amp;nbsp; Use the C# version of the checkusm algorithm.&amp;nbsp; You can keep the rest of your code in VB.&amp;nbsp; To do this, just create a new C# project and paste in the checksum code.&amp;nbsp; Your VB code can then just reference the C# project.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 18 Jul 2011 12:17:02 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/vault-customization-forum/api-doug-s-checksum-function-doesn-t-seem-to-work-for-me/m-p/3094680#M12681</guid>
      <dc:creator>Redmond.D</dc:creator>
      <dc:date>2011-07-18T12:17:02Z</dc:date>
    </item>
    <item>
      <title>Re: API - Doug's checksum function doesn't seem to work for me</title>
      <link>https://forums.autodesk.com/t5/vault-customization-forum/api-doug-s-checksum-function-doesn-t-seem-to-work-for-me/m-p/3094848#M12682</link>
      <description>&lt;P&gt;Thanks Doug.&amp;nbsp; I did the code below on the internet that works.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Public&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Class&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;CRC32&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;'This is v2 of the VB CRC32 algorithm provided by Paul (wpsjr1@succeed.net) - &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;'much quicker than the nasty original version I posted. Excellent work!&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Private&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; crc32Table() &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Private&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Const&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; BUFFER_SIZE &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;= 1024&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Public&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Function&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; GetCrc32(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;ByRef&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; stream &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; System.IO.Stream) &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Dim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; crc32Result &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;= &amp;amp;HFFFFFFFF&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Dim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; buffer(BUFFER_SIZE) &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Byte&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Dim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; readSize &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;= BUFFER_SIZE&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Dim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; count &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;= stream.Read(buffer, 0, readSize)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Dim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; i &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Dim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; iLookup &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Dim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; tot &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;= 0&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Do&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;While&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;(count &amp;gt; 0)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;For&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; i = 0 &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;To&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;count - 1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;iLookup = (crc32Result&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;And&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; &amp;amp;HFF) &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Xor&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;buffer(i)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;crc32Result = ((crc32Result&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;And&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; &amp;amp;HFFFFFF00) \ &amp;amp;H100) &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;And&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; &amp;amp;HFFFFFF &lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;' nasty shr 8 with vb &lt;span class="lia-unicode-emoji" title=":confused_face:"&gt;😕&lt;/span&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;crc32Result = crc32Result&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Xor&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;crc32Table(iLookup)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Next&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;i&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;count = stream.Read(buffer, 0, readSize)&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Loop&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;GetCrc32 =&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Not&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;(crc32Result)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;End&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Function&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Public&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;New&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;'This is the official polynomial used by CRC32 in PKZip.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;&lt;FONT color="#008000" size="2"&gt;'Often the polynomial is shown reversed (04C11DB7).&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Dim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; dwPolynomial &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;= &amp;amp;HEDB88320&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Dim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; i &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;, j &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;ReDim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;crc32Table(256)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Dim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; dwCrc &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;As&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;For&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; i = 0 &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;To&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;255&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;dwCrc = i&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;For&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; j = 8 &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;To&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; 1 &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Step&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;-1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;If&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; (dwCrc &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;And&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; 1) &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Then&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;dwCrc = ((dwCrc&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;And&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; &amp;amp;HFFFFFFFE) \ 2&amp;amp;) &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;And&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;&amp;amp;H7FFFFFFF&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;dwCrc = dwCrc&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Xor&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;dwPolynomial&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Else&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;dwCrc = ((dwCrc&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;And&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt; &amp;amp;HFFFFFFFE) \ 2&amp;amp;) &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;And&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;&amp;amp;H7FFFFFFF&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;End&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;If&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Next&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;j&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;crc32Table(i) = dwCrc&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Next&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;FONT size="2"&gt;i&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;End&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;End&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#0000ff" size="2"&gt;Class&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 18 Jul 2011 14:08:55 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/vault-customization-forum/api-doug-s-checksum-function-doesn-t-seem-to-work-for-me/m-p/3094848#M12682</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2011-07-18T14:08:55Z</dc:date>
    </item>
    <item>
      <title>Re: API - Doug's checksum function doesn't seem to work for me</title>
      <link>https://forums.autodesk.com/t5/vault-customization-forum/api-doug-s-checksum-function-doesn-t-seem-to-work-for-me/m-p/3171410#M12683</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm interested in reusing the converted class you posted, but something has gone wrong in the upload - any chance you can post the actual .vb class file?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, I'm using Vault Professional 2012 and can't find any mention of the getcrc32 class you mention in the VaultMirror solution files?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Alex.&lt;/P&gt;</description>
      <pubDate>Tue, 27 Sep 2011 12:50:38 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/vault-customization-forum/api-doug-s-checksum-function-doesn-t-seem-to-work-for-me/m-p/3171410#M12683</guid>
      <dc:creator>AlexFielder</dc:creator>
      <dc:date>2011-09-27T12:50:38Z</dc:date>
    </item>
    <item>
      <title>Re: API - Doug's checksum function doesn't seem to work for me</title>
      <link>https://forums.autodesk.com/t5/vault-customization-forum/api-doug-s-checksum-function-doesn-t-seem-to-work-for-me/m-p/4685447#M12684</link>
      <description>&lt;P&gt;This post contains the original C# code:&amp;nbsp; &lt;A href="http://forums.autodesk.com/t5/Vault-General/Code-snippets-Vault-API/td-p/1714611" target="_blank"&gt;http://forums.autodesk.com/t5/Vault-General/Code-snippets-Vault-API/td-p/1714611&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;It's in the .zip file from the second posting.&lt;/P&gt;</description>
      <pubDate>Tue, 10 Dec 2013 22:34:15 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/vault-customization-forum/api-doug-s-checksum-function-doesn-t-seem-to-work-for-me/m-p/4685447#M12684</guid>
      <dc:creator>Redmond.D</dc:creator>
      <dc:date>2013-12-10T22:34:15Z</dc:date>
    </item>
  </channel>
</rss>

