(for Internet Explorer)
← ▼ ▲
↑
バイナリ混在テキスト生成 (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)
← ▼ ▲
ConnectInTextSectionIndexFile
Sub ConnectInTextSectionIndexFile( in_IndexFilePath as string,
in_KeywordAndName as array of array of string, in_Empty as Empty )
セクション インデックス ファイルの中の指定したセクションを前のセクションとつなげる。
【引数】
in_IndexFilePath
in_KeywordAndName
セクション インデックス ファイルのパス
前のセクションとつなげるセクションのキーワードと名前の配列
in_Empty
Empty を指定してください
サンプル
_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>
ConnectInTextSectionIndexFile "Sample.c", Array( Array( "Function", "StartB" ) )
上記 TextSection タグをつなげるスクリプト：
つなげた後の.txsc ファイルの例：
<File path="..\Sample.c" type="C_Type">
<TextSection keyword="Function" name="StartA" start_line="100" end_line="159"
next_to_comment_line="110"/>
</File>
← ▼ ▲
OpenForWriteTextSection
Set file = OpenForWriteTextSection( "file.txt", Empty, Empty )
file.Cut "Section1"
file = Empty
Function OpenForWriteTextSection( SourcePath as string, DestinationPath as string,
Option_ as Empty ) as WriteTextSectionClass
セクション化されたテキストの編集を開始します。
【引数】
SourcePath
DestinationPath
編集前のセクション化されたテキスト・ファイルのパス
編集した結果を出力するファイルのパス、または、Empty
Option_
Empty を指定してください
関連
テスト
サンプル
ソース
→ 構造化テキストフォーマット (Module Mixer)
→ ToolsLib.vbs
→ T_TextSection.vbs
返り値
WriteTextSectionClass
→ WriteTextSectionClass
→ Cut (WriteTextSectionClass)
返り値のオブジェクトの参照カウンターが 0 になったら、ファイルに出力されます。
セクション化されたテキスト
セクションを削除します。
file.txt ファイルの中の、"Section1" を含むセクションを削除します。
→ UsesSection (Mxp_Symbol)
→ PickUp (WriteTextSectionClass)
残すセクションを選択します。
← ▼ ▲
Cut (WriteTextSectionClass)
Sub WriteTextSectionClass::Cut( Key as string )
セクションを削除します。
【引数】
Key
セクションの中に含まれる文字列
ソース
→ ToolsLib.vbs
←
↓