(for Internet Explorer)
← ▼ ▲
↑
WriteChunk (RIFF_Writer)
Sub RIFF_Writer::WriteLIST( in_FourCC as string )
リスト以外のチャンクのヘッダーを出力します。
【引数】
in_FourCC
出力するチャンクの名前に相当する FourCC （4文字の文字列）
次は、
WriteStruct
でライトします。
← ▼ ▲
WriteStruct (RIFF_Writer)
Sub RIFF_Writer::WriteStruct( FormatAndDataArray as array )
構造化した配列を使って、現在のチャンクに、バイナリーデータをライトします。
【引数】
連続して WriteStruct を呼び出すと、同じチャンクの中の続きをライトします。
→ WriteStruct (BinaryArray)
バイナリ配列へライトする部分の型とライトする値の集合
FormatAndDataArray
参考
WriteEnd
でチャンク（のサイズ）を確定します。
← ▼ ▲
WriteEnd (RIFF_Writer)
Sub RIFF_Writer::WriteEnd()
チャンクのサイズを確定します。 現在のチャンクのライトを終了したときに呼び出します。
WriteChunk
または
WriteLIST
でライトしたチャンクのヘッダーの一部にある
サイズ情報の部分に、適切な値をライトします。
WriteLIST
か
WriteChunk
のどちらかを呼び出したときは、
WriteEnd を呼び出す前のチャンクの親の兄弟のチャンクがライトされます。
本関数を呼び出した後で、
本関数は、
ルートのチャンクになるまで、WriteEnd を呼び出す必要はありません。 RIFF_Writer クラス
のオブジェクトが削除されるタイミングで、足りなかった WriteEnd 呼び出しを内部で自動
的に行い、OpenForWriteRIFF 関数の引数に指定したファイルに出力します。
← ▼ ▲
WritePadding (RIFF_Writer)
Sub RIFF_Writer::WritePadding( in_FourCC as string, in_Alignment as integer )
次のバイナリーデータのアラインメントを揃えるために、パディングするチャンクをライトします。
【引数】
in_FourCC
in_Alignment
パディングをするチャンクの FourCC
アラインメント
→ チャンクの中のデータの先頭をアラインメントするには
参考
:
'Pad ' FourCC ... ライトする範囲の最初
padding_size
padding ... ライトする範囲の最後
'Data' FourCC ... WritaStruct 関数でライト
data_size
data ... アラインメントが揃う位置
下記の data のアラインメントを揃えるために、下記の 'Pad ' チャンクをライトします。
← ▼ ▲
g_FileHashCache
テスト
ソース
→ T_LeafPath.vbs
T_FileHashCache
→ ToolsLib.vbs
ファイルのハッシュ値（MD5）のキャッシュ。
キーはフル パス、アイテムはハッシュ値（リード オンリー）である辞書。
プロセス起動後、初めて指定されたファイルのときだけ、ハッシュ値を計算します。
大量のファイルを何度も比較するときに使うと、高速になります。
Assert g_FileHashCache( "C:\A.txt" ) = "9060587edeb01a63e3d3edc959678d1e"
→ MD5 (BinaryArray)
参考
g_FileHashCache に入るオブジェクトは、ToolsLib.vbs を include するときに作成されます。
キーがフォルダーのパスのときのアイテムは、"Folder" です。
ただし、フォルダーが空のときは、"EmptyFolder" です。
キーがファイルやフォルダーのパスではないときのアイテムは、"" です。
ファイルの変更があったときは、Remove メソッド、RemoveAll メソッドでキャッシュを破棄してください。
g_FileHashCache.RemoveAll
g_FileHashCache.CopyRenFile "Source.txt", "Destination.txt"
ハッシュ値の計算と、ファイルのコピーを同時にするときは、CopyRenFile を呼び出します。
ファイルの削除と同時に、キャッシュを更新するときは、DeleteFile を呼び出します。
g_FileHashCache.DeleteFile "File.txt"
g_FileHashCache.Remove "File.txt"
FileHashCacheClass
← ▼ ▲
バイナリ混在テキスト生成 (txt2bintxt.exe)
ダウンロード
txt2bintxt.exe は、VBScript で、一部がバイナリになっているテキストファイルを
作成できるようにする変換ツールです。
f.WriteLine "123"
f.WriteLine Chr(&hFF)+"EF BB BF 0D 0A"
f.WriteLine "123"
バイナリになっている行は、行頭に Chr(&hFF) を出力してください。
31 32 33 0D 0A
EF BB BF 0D 0A
31 32 33 0D 0A
こうして出力したファイルを、in.txt として、
txt2bintxt.exe in.txt out.txt
を実行すると、out.txt は次のようになります。
out.txt （バイナリ表現）
out.txt （テキスト表現）
123
・ソ
123
EF BB BF 0D 0A
EF BB BF 0D 0A
・ソ
EF BB BF は、UTF-8 の BOM です。
→ txt2bintxt.zip
不要になった入力ファイル(in.txt) は、別途削除してください。
関連
→ new_TextFileCharSetStack
BOM 付きテキストファイル
→ BinaryArray クラス
バイナリ・ファイル・アクセス
← ▼ ▲
Txt2BinTxt
Sub Txt2BinTxt( SrcPath as string, DstPath as string )
(src)
→ バイナリ混在テキスト生成 (txt2bintxt.exe)
参考
← ▼ ▲
get_ADODBConsts
Function get_ADODBConsts() as ADODBConsts
ADODB モジュールの定数をメンバーに持つオブジェクトを返します。
ADODBConsts が定義する定数
adReadAll, adReadLine, adTypeBinary, adTypeText
adModeRead, adModeWrite, adModeReadWrite
adSaveCreateOverWrite
adCRLF, adLF, Keep
サンプル
Dim c : Set c = get_ADODBConsts()
t = f.Read( c.adReadAll )
(src)
バイト配列を作成する関数
バイト配列と整数の間で変換する関数
ConvertToByteArray
ConvertToStructuredByteArray
BytesToShortInt
BytesToUShortIntToLongInt
BytesToLongInt
ShortIntToBytes
LongIntToUShortIntToBytes
LongIntToBytes
関連
→ ADODB.Stream
ファイル：
System.vbs
← ▼ ▲
ConvertToByteArray (ADODBConsts)
Function ADODBConsts::ConvertToByteArray( ByteArray as variant,
Offset as integer, Size as integer ) as array of Byte
文字列や配列や数値を、バイト配列に変換します。
【引数】
ByteArray
Offset
文字列、または配列、または数値
返り値の先頭となる ByteArray の中の位置。先頭=0
Size
ByteArray の中から返り値にするサイズ（バイト）。最後まで=-1
ファイル：
System.vbs
返り値
Byte 配列
Write (ADODB.Stream)
に渡せる
サンプル
Dim binary, stream
Dim c : Set c = get_ADODBConsts()
binary = c.ConvertToByteArray( ChrB( &h42 ) + ChrB( &h4D ), 0, Empty )
stream.Write binary
binary = c.ConvertToByteArray( &h4D, 1, Empty )
(src)
→ T_Binary フォルダ
テスト
参考
→ Write (BinaryArray)
← ▼ ▲
ConvertToStructuredByteArray (ADODBConsts)
Function ADODBConsts::ConvertToStructuredByteArray( FormatAndDataArray as array ) as array of Byte
構造化した配列を、バイト配列に変換します。
【引数】
FormatAndDataArray
バイナリ配列へライトする部分の型とライトする値の集合
返り値
Byte 配列
Write (ADODB.Stream)
に渡せる
(src)
→ T_Binary フォルダ
テスト
参考
→ WriteStruct (BinaryArray)
構造化した配列、FormatAndDataArray 引数の説明
← ▼ ▲
BytesToShortInt
Function ADODBConsts::BytesToShortInt( b0, b1, b2, b3 as integer ) as integer
2バイトのバイナリ・データを、-32768(&h8000)〜32767(&h7FFF) の整数に変換します。
サンプル
c.BytesToShortInt( &hFE, &hFF ) = &hFFFE
(src)
← ▼ ▲
BytesToUShortIntToLongInt
Function ADODBConsts::BytesToUShortIntToLongInt( b0, b1, b2, b3 as integer ) as integer
2バイトのバイナリ・データを、0〜65535 の整数に変換します。
サンプル
c.BytesToUShortIntToLongInt( &hFE, &hFF ) = 65534
(src)
← ▼ ▲
BytesToLongInt
Function ADODBConsts::BytesToLongInt( b0, b1, b2, b3 as integer ) as integer
4バイトのバイナリ・データを、Long 型整数に変換します。
サンプル
c.BytesToLongInt( &h78, &h56, &h34, &h12 ) = &h12345678
(src)
c.BytesToLongInt( AscB( b ), AscB( MidB( b, 2, 1 ) ), _
AscB( MidB( b, 3, 1 ) ), AscB( RightB( b, 1 ) ) )
← ▼ ▲
ShortIntToBytes
Function ADODBConsts::ShortIntToBytes( Value as integer ) as array of integer
-32768(&h8000)〜32767(&h7FFF) の整数を、2バイトの配列に変換します。
サンプル
c.ShortIntToBytes( &hFEFF ) = Array( &hFF, &hFE )
&h0000〜&h7FFF（Integer型）、&h10000〜 &h7FFFFFFF（Long型） は、正の整数です。
&h8000〜&hFFFF（Integer型）、&h80000000〜（Long型） は、負の整数です。
(src)
← ▼ ▲
LongIntToUShortIntToBytes
Function ADODBConsts::LongIntToUShortIntToBytes( Value as integer ) as array of integer
0〜65535 の整数を、2バイトの配列に変換します。
サンプル
c.LongIntToUShortIntToBytes( 65534 ) = Array( &hFE, &hFF )
(src)
← ▼ ▲
LongIntToBytes
Function ADODBConsts::LongIntToBytes( Value as integer ) as array of integer
整数を、4バイトの配列に変換します。
サンプル
c.LongIntToBytes( &h12345678 ) = Array( &h78, &h56, &h34, &h12 )
(src)
← ▼ ▲
ADODB.Stream 関連
← ▼ ▲
ADODB_Stream_loadFromFile
→ vbslib.vbs
Sub ADODB_Stream_loadFromFile( Stream as ADODB.Stream, Path as string )
エラーメッセージを適切にした ADODB.Stream.LoadFromFile 。
テスト
ソース
→ LoadFromFile (ADODB.Stream)
参考
→ T_fc.vbs
T_IsSameBinaryFile_ReadWriteLock
← ▼ ▲
(複数行) ArrayFromLines
複数行からなる文字列のうち、それぞれの行を要素とした配列を返します。
Function ArrayFromLines( lines as string ) as Array of string
For Each line In ArrayFromLines( "ABC"+ vbCRLF +"DEF" )
Next
【引数】
lines
返り値
複数行からなる文字列
それぞれの行を要素とした配列
上記 ArrayFromLines の返り値は、Array( "ABC", "DEF" )
"ABC"+ vbCRLF +"DEF"
サンプル
関連
→ StringStream クラス
改行文字は、CR+LF でも LF でもどちらでも構いません。
a_array = ArrayFromLines( Trim2( root.selectSingleNode( _
"./Lines/text()" ).nodeValue ) )
サンプル
<Lines>
Line (1)
Line (2)
</Lines>
XML
VBScript
a_array は、Array( "Line (1)", "Line (2)" ) になります。
Trim2
Lines
nodeValue
selectSingleNode
テスト
→ vbslib.vbs
ソース
→ T_Lines.vbs
→ FindStringLines
→ SortStringLines
← ▼ ▲
セクション化されたテキスト
→ セクション化されたソースファイル (Module Mixer)
関連
→ 構造化テキストフォーマット
ReadTextSections
OpenForWriteTextSection
セクション化されたテキストを集めた文字列を返します
セクション化されたテキストを編集します
複数のセクションに分けたテキストファイルを扱います。
CreateFromTextSections
セクション化されたテキストを集めてファイルを作成します
→ MultiTextXML_Class
← ▼ ▲
CreateFromTextSections
Sub CreateFromTextSections( in_XML_Path as string, in_XML_Root as IXMLDOMElement,
in_CreateFilePath as string, in_MixedTextXPath as string, in_Empty as Empty )
【引数】
in_XML_Path
in_XML_Root
TextSection タグがある XML ファイルのパス
Empty、または、in_XML_Path の XML の要素オブジェクト
in_CreateFilePath
作成するファイルのパス
in_MixedTextXPath
セクション化されたテキストを集めてファイルを作成します。
返り値
Empty、または、オプション（下記）
in_Empty
セクション化されたテキストを集めたテキスト
下記の MixedText タグがある XML 要素の XPath、基準は in_XML_Root
参考
→ CreateFromTextSections コマンド
テキスト、MixedText タグのサンプル
in_XML_Root の中にある
Variable タグの変数
は、TextSection タグの path 属性に指定できます。
サンプル
CreateFile タグに指定されたすべてのファイルを作成する。
CreateFromTextSections "SettingA.xml", Empty, Empty, Empty, Empty
in_XML_Root に Empty を指定すると、内部で
LoadXML
( in_XML_Path, Empty ) を呼び出します。 その分、
CreateFile タグに指定されたすべてのファイルを作成する。
サンプル
CreateFromTextSections "SettingA.xml", Empty, "_out.txt", "#C_Type", Empty
テスト
→ T_TextSection.vbs
T_CreateFromTextSections
ソース
→ ToolsLib.vbs
関連
→ CreateFromTextSections コマンド
→ ReadTextSections 関数
CreateFromTextSections "SettingA.xml", Empty, "_out.txt", "/MixedText[@id='C_Type']", Empty
処理時間がかかります。
in_Empty に get_ToolsLibConsts().DeleteIfNoSection を指定すると、MixedText タグの中の TextSection タグ
が１つも無いときに、in_CreateFilePath のファイルが削除されます。
← ▼ ▲
ReadTextSections
Function ReadTextSections( in_XML_Root as IXMLDOMElement,
in_MixedTextXPath as string, in_VariablesForPath as string,
in_Variables as LazyDictionaryClass, in_Empty as Empty )
【引数】
in_XML_Root
in_MixedTextXPath
in_MixedSettingXPath の基準となる XML要素（タグ）
下記の MixedText タグがある XML 要素の XPath、基準は in_XML_Root
in_XML_FilePath
アドレスの基準となる XML ファイルのパス
in_VariablesForPath
セクション化されたテキストを集めた文字列を返します。
返り値
Empty を指定してください
in_Empty
セクション化されたテキストを集めたテキスト
Empty または path 属性に評価するときに使う辞書
→ LazyDictionaryClass
参考
テスト
→ T_TextSection.vbs
T_ReadTextSections
ソース
→ ToolsLib.vbs
<File mixed_text="SettingA.xml#mixed_1"/>
サンプル
SettingB.xml
<MixedText id="mixed_1">
<TextSection path="File.c#First"/>
<TextSection path="File.c#Second"/>
</MixedText>
SettingA.xml
VBScript
Set linker = new LinkedXMLs
linker.XmlTagNamesHavingIdName = Array( "MixedText" )
xml_path = "SettingB.xml"
Set xml_root = LoadXML( xml_path, Empty )
linker.StartNavigation xml_path, xml_root
Set mixed_text_tag = linker.GetLinkTargetNode( xml_root.getAttribute( "mixed_text" ) )
text = ReadTextSections( mixed_text_tag, ".", linker.TargetXmlPath, Empty, Empty )
linker.EndNavigation
LinkedXMLs
"SettingB.xml"
"mixed_text"
mixed_text
SettingB.xml の XML 属性から参照する MixedText タグからセクションを集める。
ReadTextSections
関連
→ CreateFromTextSections コマンド
→ CreateFromTextSections コマンド
テキストのサンプル
in_XML_Root の中にある
Variable タグの変数
と、in_VariablesForPath 引数の変数は、TextSection タグの path
属性に指定できます。
→ CreateFromTextSections 関数
VBScript
xml_path = "SettingB.xml"
Set xml_root = LoadXML( xml_path, Empty )
text = ReadTextSections( xml_root, "/MixedText[@id='mixed_1']", xml_path, Empty, Empty )
ReadTextSections
← ▼ ▲
MakeCrossedOldSections
→ ToolsLib.vbs
ソース
テスト
→ T_TextSection.vbs
T_MakeCrossedOldSections
Sub MakeCrossedOldSections( in_OutFolderPath as string, _
in_NewFolderPath as string or PathDictionaryClass, in_OldFolderPath as string, _
in_NewTxscPath as string, in_OldTxscPath as string, in_Option as Empty )
新しいセクションの構成に合わせるように、古い内容のセクションを集めます。
【引数】
in_OutFolderPath
in_NewFolderPath
出力ファイルを格納するフォルダーのパス
新しいセクションの構成を持つファイルが入ったフォルダーのパス
in_OldFolderPath
古い内容のセクションを持つファイルが入ったフォルダーのパス
in_OldFolderPath の中間ファイルを格納するフォルダーのパス
in_OldTxscPath
in_NewFolderPath の中間ファイルを格納するフォルダーのパス
in_NewTxscPath
Empty を指定してください
in_Option
→ T_CrossedOld フォルダー
PathDictionaryClass
in_NewFolderPath 引数に
のオブジェクトを指定できます。
in_NewFolderPath 引数に指定したファイルに対応する出力ファイルが in_OutFolderPath 引数に指定
したフォルダーに格納されます。
関連
→ DoTextShrink
→ NaturalDocs
MakeTextSectionIndexFile
中間ファイルは、
が出力するセクション インデックス ファイルです。
サンプル
Out
New
Old
A.txt
B.txt
/* Title: Section_A_1 */
This is old Section-A-1.
/* Title: Section_B_1 */
This is old Section-B-1.
/* Title: Section_B_2 */
This is old Section-B-2.
A.txt
/* Title: Section_A_1 */
New A-1.
New A-2.
B.txt
/* Title: Section_B_1 */
New B-1.
/* Title: Section_B_2 */
New B-2.
/* Title: Section_B_1 */
This is old Section-B-1.
Y.txt
X.txt
/* Title: Section_A_1 */
This is old Section-A-1.
/* Title: Section_B_2 */
This is old Section-B-2.
/* Title: Section_A_2 */
This is old Section-A-2.
/* Title: Section_A_2 */
/* Title: Section_A_2 */
This is old Section-A-2.
New フォルダーにある A.txt と同じ名前のファイルを、Out フォルダーに作成します。 その内容は、
New フォルダーにある A.txt のセクションの構成（順序）、すなわち、Section_A_1、Section_A_2 の
順になります。 セクションの名前は、
MakeTextSectionIndexFile
が入力する形式で記述します。
Natural Docs
形式のみ対応しています。 それぞれセクションの内容は、Old フォルダーに
現在は、
ある、すべてのファイルの中から検索して見つかったセクションをコピーした内容になります。
→ ModuleAssort
← ▼ ▲
MakeTextSectionIndexFile
vbslib_helper.exe
内部で
を呼び出しています。
MakeTextSectionIndexFile "*.c", "NaturalDocs", "C_Type", Empty, Empty
Sub MakeTextSectionIndexFile( Path as string or PathDictionaryClass,
TagTypeName as string, BeforeRootFullPath as string, AfterRootFullPath as string )
タグが付いたファイルから、セクション インデックス ファイルを更新します。
【引数】
Path
TagTypeName
セクション化されたテキスト ファイルのパス、または、
タグのタイプ、"NaturalDocs" を指定してください
テスト
サンプル
ソース
T_MakeTxScFile
.txsc ファイルのタイムスタンプの方が新しいときは、更新をせず、高速に処理します。
→ T_TextSection.vbs
→ ToolsLib.vbs
PathDictionaryClass
→ NaturalDocs 関連の構文解析
*.txsc ファイルを作成する
サンプル
_txsc\(ファイル名.拡張子).txsc の例
<File path="..\Sample.c" type="C_Type">
<TextSection keyword="Function" name="StartA" start_line="100" end_line="129"
next_to_comment_line="110"/>
<TextSection keyword="Function" name="StartB" start_line="130" end_line="159"
next_to_comment_line="140"/>
</File>
BeforeRootFullPath
AfterRootFullPath
セクション化されたテキストのルート・フォルダーのパス
セクション インデックス ファイル(.txsc) のルート・フォルダーのパス
BeforeRootFullPath 引数、AfterRootFullPath 引数に Empty を指定すると、カレント フォルダーを指定した
ときと同じ処理をします。 BeforeRootFullPath 引数、AfterRootFullPath 引数の詳細は、
→ ReplaceRootPath
SectionTypeName
出力ファイルの中の type 属性に入れる文字列
BeforeRootFullPath 引数と AfterRootFullPath 引数に、テキスト ファイルとインデックス ファイルのある場所
の関係を指定します。
→ TextStream::Line
参考
→ Natural Docs
TagTypeName = "NaturalDocs" の場合の Sample.c の例
/***********************************************************************
* Function: StartA
************************************************************************/
void StartA()
{
}
/***********************************************************************
* Function: StartB
************************************************************************/
void StartB()
{
}
コールツリー
MakeNaturalComments_C_Language
config->AdditionalKeywords
g_NaturalDocsKeywords
(src)
MakeTextSectionIndexFile
End of File
MakeTextSectionIndexFile
(.vbs)
(.c)
←
↓