'【VBScript 文字均等割付】Copyright(C) 1999 Primesoft
'
' VBScriptによる外部変形のサンプル スクリプトです。 1999/9/29
' 同じ文字サイズで1番長い文字列を基準に均等割付します。
' 原点の座標と位置は変更しませんので、あらかじめ文字の先頭を合わせてください。
'
' #be
' #be はbed_temp.txtとbed_temp.pt を 均等割付.batがある
' ディレクトリに作成します。
' #h3
' #hc 均等割付する文字範囲を指定
' #e
' ----------------------------------------------------------------------
' VBScriptによる処理
Dim fs
Dim aryLength(64)
Set fs = CreateObject("Scripting.FileSystemObject")
' bed_temp.pt から文字属性ごとの文字長さをセットする
Call Process(0)
' 文字均等割付する
Call Process(1)
WScript.Quit
' ----------------------------------------------------------------------
' 文字均等割付 サブルーチン
'
Sub Process(iMode)
Dim readFile, tempFile
Dim strBuf, strText, strField, strTemp
Dim iPos, iLen, iLenByte, iFormat, iOne, i
Set readFile = fs.OpenTextFile("bed_temp.pt")
If iMode = 0 Then
' 文字属性ごとの文字長さを初期化
For i = 0 To 63
aryLength(i) = 0
Next
Else
' 書き込みテンポラリファイルを作成
Set tempFile = fs.CreateTextFile("bed_temp")
End If
strText = "T" & Chr(9)
While readFile.AtEndOfLine = false
strBuf = readFile.ReadLine
If iMode <> 0 Then
tempFile.WriteLine(strBuf)
End If
strField = Left(strBuf, 2)
If strField = strText Then
' 文字データ
strTemp = Mid(strBuf, 3)
strField = ""
For i = 1 To 4
' スペースが見つかったら、スペースの左側がフィールド テキスト
iPos = InStr(strTemp, Chr(32))
If iPos = 0 Then
break
End If
' フィールド テキストを strField 変数に割り当てる
strField = Left(strTemp, iPos - 1)
' テキスト行からフィールド値テキストを取り除く
strTemp = Right(strTemp, Len(strTemp) - iPos)
Next
If strField <> "" Then
' iFormat 文字属性番号
iFormat = Int(strField)
strBuf = readFile.ReadLine
iLen = Len(strBuf)
iLenByte = 0
' 文字列のバイト数
For i = 2 To iLen
strField = Mid(strBuf, i, 1)
iCode = Asc(strField)
If iCode > 0 Then
' 半角文字
iLenByte = iLenByte + 1
Else
' 全角角文字
iLenByte = iLenByte + 2
End If
Next
If iMode = 0 Then
' 文字属性ごとの最長バイト数
If iLenByte > aryLength(iFormat) Then
aryLength(iFormat) = iLenByte
End If
Else
iLen = aryLength(iFormat) - iLenByte
If iLen > 0 Then
' 一番長い文字に合わせて "・" と "・" を付加
iOne = iLen Mod 2
iLen = iLen - iOne
i = 0
While i < iLen
strBuf = strBuf & "・"
i = i + 2
Wend
If iOne <> 0 Then
strBuf = strBuf & "・"
End If
End If
tempFile.WriteLine(strBuf)
End If
End If
End If
Wend
' ファイルをクローズ
readFile.Close
If iMode = 1 Then
tempFile.Close
' ファイル bed_temp を bed_temp.pt にコピー
fs.CopyFile "bed_temp", "bed_temp.pt", true
' テンポラリファイルを削除
fs.DeleteFile "bed_temp"
Set tempFile = fs.CreateTextFile("bed_temp.txt")
' 選択文字を削除
tempFile.WriteLine("hd")
tempFile.Close
End If
End Sub
|