とりあえず、作ってみよう (バイナリモード編) page2
さて・・
一通りデータセットの作成を行ってみてどうだったでしょうか?
え、よく分からなかった?(^^;
まぁ・・。
でも基本的には、これの繰り返しなのでそのうちに分かってくると思います。
基本ストイックです・・。(笑)
慣れてくれば、色々出来る(というか高度にやる必要性も出てくる)と思いますけど、
それを知らなくても、ある程度は作れます。
では、次は「LZH」の識別データ作成に参りましょう〜。
ほぼ「BMP」と同じ方法なので、先ほど説明しなかった部分に関して補足しながら
説明することにします。
先ほどの「BMP」編の通り行っていれば、BMPのメッセージを追加した際に、
LZHのメッセージも追加しているはずです。
追加していない場合は、「編集(V)」→「メッセージ編集(M)」からメッセージの
編集ウィンドウを開いてメッセージを編集しましょう。
infomation:メッセージ編集画面では、上部にある「<」「>」を押すか、もしくは
その下のスライダーを操作することでページを変えることが出来ます。ページの追加は、
「>」で行い、スライダーでは出来ないので注意してください。
また右下の数字"00002"は拡張子のIDです。この拡張子IDはデータ作成全体で使用され、
もう1つ上部に表示されている数字"00001"よりも重要です。"00001"はただのメッセージ
編集上の番号(ページ番号)でしかありません。
ということで、表示メッセージの編集はこれでOKなので、
LZHファイルのヘッダー情報を調べ定義データを作成します。
またまた、Stirlingの登場です。
「BMP」の時と同じように、2つのファイルのバイナリデータを見てみることにします。
上の画像を見ても分かるように、「LZH」のヘッダー情報は双方のファイルに含まれる"lh"
だろうということが推測できます。ちなみに、lh後の"5"や"6"はlzhの圧縮レベルを表します。
ここで、幾つかの作成方法が考えられます。
@"lh"もしくは、"-lh"をヘッダーとして登録する。
A"-lh5-""-lh6-"までをヘッダー情報とし、それぞれ別のメッセージ
(「圧縮ファイル-lh5-」等)で表示する
@の場合、圧縮レベルに関係なく識別できるのでより簡単にデータを作れます。
Aの場合は、圧縮レベルごとに全く別の形式としてデータを作ることになってしまいます。
しかし、識別時に圧縮レベルも分かるので非常に便利ですね〜。
(ダイノロジカルに含まれる公式データはこちらで作ってあります)
Aのパターンは、ヘッダーの場所そのものは変わらないので手続きは多くないですが、
それでも文章にすると長いので、今回は@のパターンで作成します。
「BMP」編の時と同じように、ヘッダー情報を登録します。
「編集(V)」→「ヘッダー定義作成(H)」を開き、ヘッダー"lh"の位置を登録します。
ヘッダー"lh"の位置は、ファイル先頭"HOF"から"3"バイト目、そこから"2"バイトです。
なので、ヘッダー定義の設定は、ヘッダータイプ、基準点からのバイト、読み取りバイトを
それぞれ画像のように"HOF"、"3"、"2"としました。設定したら、「作成/更新」ボタンを
押しましょう。
infomation:
『オンラインデータの要求』このヘッダー情報をオンライン上のファイル識別に利用するか?を
宣言します。データをダイノロジカルのオンライン識別に対応させたい場合、「する」を設定
してください。
ただし、これはあくまでも"宣言"です。
実際のデータ取得は、ダイノロジカルのアドイン(dino)等で行います。
dinoでは、固定バイナリ、および文字列サーチのヘッダーモードに対してのみオンラインデータの
取得に対応しています。(04-03-01現在)
オンラインデータの要求は、"基準点からのバイト"および"読み取りバイト"の値が大きい場合は
行わないでください。1024バイトぐらいまでであれば問題ないと思います。
自分で作った識別アルゴリズム(自前モード)をオンライン識別に対応させたい場合も、宣言してお
く必要があります。(これについては後述します)
『データのフィルタリング』読み取りバイト中から、実際に読み取る文字のタイプを指定できます。
これは例えば、読み取るヘッダーが"-lh6-"(先頭3バイト目から5バイト)の時に、フィルタを
「ローマ字」にすれば、このヘッダー定義は"-lh6-"のlhの部分しか取得しません。
なので結果として、"lh"のみを取得することと同じことになり、"-lh5-"も"-lh6-"も同じものとして
扱われます。
『データ取得で確保するメモリ』これは、フィルタリング処理の際に、処理を行う単位です。
たとえば、読み取りバイトが500バイトだったとして、確保メモリを「100バイト」に設定した場合
このヘッダー定義はフィルタリング処理を「100バイト」ずつ計5回に分けて行います。
ここで、もし100バイト目と101バイト目が漢字などの2バイト文字だった場合に、それは1バイト文字
とみなされてしまうかもしれません。読み取りバイトが100バイトを超えないような処理では、
「100バイト」で問題ありません。
ここまで、終わったら次は識別ベースラインに「LZH」を追加しましょう。
識別ベースラインウィンドウを開いて、先ほど追加した「BMP」の下に、「LZH」の識別処理を追加
します。
データNo(000000〜)の列の"000001"をクリックして、「データ編集 (データNo.000001)」ウィンドウ
を開きます。
図のように、ここまでで作った「識別メッセージ」「ヘッダー定義」および「実際のファイルヘッダー」
を設定し、識別処理として登録します。
設定したら、「OK」を押しましょう。
「BMP」に続けて「LZH」も識別処理に加わりました。
最後に、メニューの「ファイル(F)」→「データセット構築(S)」を選択して、データセットを保存して
ください。
あとは、ダイノロジカルで実際に「BMP」「LZH」を識別して確認すれば終了です。
おつかれさまでし・・パタッ(zZZZ
作成したデータセットを使ってみよう!