SQLの窓

2014年03月13日


VBScript : バイナリファイルの更新( 1バイトの ByteArray なら、ADO.Stream で作成できます )



VBScript 内でバイナリファイルを更新するのは、ByteArray というデータ型で文字列を保持する必要があるのですが、VBScript 標準ではそのようなデータ型を作成する事ができません。

しかし、ADODB.Stream を使ってバイナリファイルからデータを Read メソッドで読み出すと、それは ByteArray になります。長い文字列として ByteArray を取得するにはもう少し応用が必要ですが、1バイト単位の ByteArray であれば、先に 256 種類のバイトを格納したファイルを用意しておけば、取得する事ができます。



このデータを使って、ビットマップファイルを更新するのであれば、色コードの表現は 1バイトづつなので、例えば 32 x 32 の24ビットマップを全て赤に設定しておいて、緑やその他の色に変更する事は容易になります。


※ 赤枠部分が色コードで、それが連続して、32 x 32 セット存在します
Set Fso = CreateObject( "Scripting.FileSystemObject" )
Set Stream = CreateObject("ADODB.Stream")
Set StreamTable = CreateObject("ADODB.Stream")

strCurPath = WScript.ScriptFullName
Set obj = Fso.GetFile( strCurPath )
Set obj = obj.ParentFolder
strCurPath = obj.Path

strFullPath = Fso.GetAbsolutePathName( strCurPath & "\red.bmp" )

StreamTable.Open
StreamTable.Type = 1	' バイナリ
StreamTable.LoadFromFile strCurPath & "\byte_array.dat"

Stream.Open
Stream.Type = 1		' バイナリ

Stream.LoadFromFile strFullPath

For I = 1 to 32*32

	Stream.Position = 16*3+(I-1)*3+7	' Green 位置
	Stream.Write  GetByteArray(255)

	Stream.Position = 16*3+(I-1)*3+8	' Red 位置
	Stream.Write  GetByteArray(0)

Next

Stream.SaveToFile strCurPath & "\green.bmp", 2

Stream.Close
StreamTable.Close

Function GetByteArray( nData )

	StreamTable.Position = nData

	GetByteArray = StreamTable.Read(1)

End Function

strCurPath は、スクリプトが存在するフォルダになります。
※ GetByteArray は、1バイトの ByteArray データを取得します

CAPICOM をインストールすると、容易に ByteArray を扱えるようになります。

CAPICOM は、標準の Windows ではインストールされないと思いますが、Microsoft の何かの開発系ソフトウェアをインストールするとインストールされてしまっている可能性はあります。

CAPICOM には、Utilities object が存在し、以下のような便利なメソッドが揃っています。
※ Set CAPIUtil = CreateObject( "CAPICOM.Utilities" ) でオブジェクトを作成してメソッドを使用
MethodDescription
Base64Decode

Decodes a string from base64.

Base64Encode

Encodes a string as base64.

BinaryStringToByteArray

Converts a binary-packed string to an array of bytes.

BinaryToHex

Converts a binary-packed string to a hexadecimal string.

ByteArrayToBinaryString

Converts an array of bytes to a binary-packed string.

GetRandom

Generates a secure random number.

HexToBinary

Converts a hexadecimal string to a binary-packed string.

LocalTimeToUTCTime

Converts the computer's local time to Coordinated Universal Time.

UTCTimeToLocalTime

Converts Coordinated Universal Time to the computer's local time.

BinaryString は、VBscript で表現されている通常の文字列です。例えば、ChrB(0) 等のデータを含むバイナリデターであるという意味です


posted by lightbox at 2014-03-13 18:37 | VBS + オブジェクト | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり