バイナリファイルを読み取ってデータを編集してから、ファイルを新しいファイルとして書き戻そうとしています。ファイルの読み取りと書き込みは問題ありません...正常に動作します。
しかし、バイナリデータを変更しようとすると、「VBScriptランタイムエラー:タイプの不一致」というエラーが発生します。
例として、ファイルを読み取り、3番目のバイトを「@」(アットマーク)に変更しています。
Option Explicit
Const ADTYPEBINARY = 1
Const ADSAVECREATEOVERWRITE = 2
Dim gstrInputFileName
Dim gstrOutputFileName
Dim gobjBinaryInputStream
Dim gobjBinaryOutputStream
Dim gbytearrayReadBinaryFile
gstrInputFileName = "some-binary-file.bin"
gstrOutputFileName = "output-binary-filename.bin"
WScript.Echo "Reading the file data"
Set gobjBinaryInputStream = CreateObject("ADODB.Stream")
gobjBinaryInputStream.Type = ADTYPEBINARY
gobjBinaryInputStream.Open
gobjBinaryInputStream.LoadFromFile gstrInputFileName
gbytearrayReadBinaryFile = gobjBinaryInputStream.Read
gobjBinaryInputStream.Close
Set gobjBinaryInputStream = Nothing
WScript.Echo "Modifying the file data"
' These all fail... "Type mismatch"
'' pwwqbytearrayReadBinaryFile(3) = &H40
'' pwwqbytearrayReadBinaryFile(3) = ChrB(65)
'' pwwqbytearrayReadBinaryFile(3) = Chr(65)
'' pwwqbytearrayReadBinaryFile(3) = AscB("@")
'' pwwqbytearrayReadBinaryFile(3) = Asc("@")
'' pwwqbytearrayReadBinaryFile(3) = "@"
'' pwwqbytearrayReadBinaryFile(3) = 65
WScript.Echo "Writing the file data"
Set gobjBinaryOutputStream = CreateObject("ADODB.Stream")
gobjBinaryOutputStream.Type = ADTYPEBINARY
gobjBinaryOutputStream.Open
gobjBinaryOutputStream.Write gbytearrayReadBinaryFile
gobjBinaryOutputStream.SaveToFile gstrOutputFileName, ADSAVECREATEOVERWRITE
gobjBinaryOutputStream.Close
Set gobjBinaryOutputStream = Nothing
WScript.Echo
WScript.Quit