here is a complete version of the function with few optimizations and real size for the array.
 Code:
Function GetXMLVersion(optional $strComputer)
  redim $GetXMLVersion[10]
  dim $oldopt, $strKey, $intI

  $strKey="HKEY_CLASSES_ROOT\CLSID\{2933BF90-7B36-11D2-B20E-00C04F983E60}\VersionList"

  If vartype($strComputer) = 0  $strComputer = ""   EndIf
  If $strComputer  $strKey = "\\"+$strComputer+"\"+$strKey   EndIf

  $oldopt = SetOption( "WOW64AlternateRegView", "Off")
  $intI = -1
  If KeyExist( $strKey )
    dim $intIndex, $strValName

    $intIndex = 0
    $strValName = EnumValue( $strKey, $intIndex )
    While Not @ERROR
      If $strValName <> ""
        ; Want to ignore the Default entry
        $intI = $intI + 1
        if $intI > UBound($GetXMLVersion)
          redim preserve $GetXMLVersion[UBound($GetXMLVersion)*2]
        endif
        $GetXMLVersion[$intI] = $strValName
      EndIf
      $intIndex = $intIndex + 1
      $strValName = EnumValue( $strKey, $intIndex)
    Loop
  EndIf
  $oldopt = SetOption( "WOW64AlternateRegView", $oldopt )

  if $intI=-1     exit 1    endif

  redim  preserve $GetXMLVersion[$intI]
  exit 0
EndFunction

;--------------------------------
;  demo
;--------------------------------
$arrVers = GetXMLVersion()
if not @error
  for each $vers in $arrVers
    $vers ?
  next
endif
The main change is that the returned array has no -1 value at the end. you just need to test the macro @error. There is also one optimization for local access (no \\.\) and one optimization on string concatenation (strKey include \\$strcomputer\ when remote access).
_________________________
Christophe