第14回 プログラミングの舞台裏「2.PDBファイルのデータ構造〜Ver.0.1」

14−2.PDBファイルのデータ構造〜Ver.0.1

データ構造、と言っても、パソコン側からPDBファイルを作るところまでは、何とかこぎつけました。したがって、ここではプログラム内で扱うデータを「格納する形」についての説明になります。

エクセルのデータ、と言えば、大抵の方がこんな縦横のセルをイメージされるんじゃないでしょうか?

    

この縦、横のイメージから連想されるのは、2次元の配列変数になるでしょう。

    

NS Basicでは、データベースへのデータの読み書きに直接配列変数を指定することが出来ます。

	Dim DtSheet(10,10) as Single
	Dim Db as Database
	Dim res as Integer

	res=DbOpen(Db,"TESTDB",0)
	res=DbGet(Db,DtSheet)
	res=DbClose(Db)

このサンプルコードのように、複数のデータを持った配列変数でも、読み込み動作は1回で済むので、プログラムは簡単に出来ます。
しかし、配列変数は、予め、縦と横の要素数を「固定」の値として宣言する必要があるので、指定したサイズ以外のデータは読み込めないことになります。
つまり、用意した配列変数より、大きくても小さくても読み込めない、ということです。
例えば、上の例の配列変数DtSheet()は、10行10列のデータしか読み込めないことになります。
だからといって、あまり大きな行・列のデータを用意しておくのも無駄です。
現行バージョンのNS Basicでは動的に配列変数を用意できないので、これ以上は仕方がありません。別の方法を検討することにしました。

CSVといえば、カンマで各要素を区切ったテキストファイルですが、こういうものを簡単に分解する関数がありました。
Visual BASICで言うところの、Split()関数ですが、これに類似するのが、NSBSystemLibというライブラリに収められていました。

	DelimitedItem()

この関数は、特定の分割文字で分割されたn番目の文字列を返すもので、この関数を使えば、それほど悩まなくても、特定の位置からの要素を取り出すことが出来ます。(参照:Basic BASICの第12回の3)
つまり、各行のデータをカンマを含んだまま1つの文字列として、次のようにデータベースに保存しておきます。
そうすれば、行と列を指定するだけで、必要なデータが取り出せるわけです。

    

ビューア側は、この構造をもったデータベースから、1行ずつ取り出して、各列ごとのデータに分解するだけです。
分解したデータを、それぞれ配列変数に順に代入すれば、表示データとして使うことが出来ます。
また、この方法だと、パソコン側のコンバータも、行単位でデータを容易すればよくなりますから、比較的簡単な構造になります。

このように、プログラミングする側が「有利」になるようなデータ構造を考えるのは、後々の作業に響きますから、結構重要です。
一応、様々な手法が存在するようですが、結局のところ、このような小さなアプリでは、経験がモノを言うようです。

そして、最初のバージョンVer.0.1がリリースされました。


前へ     目次へ     次へ

第14回 プログラミングの舞台裏「2.PDBファイルのデータ構造〜Ver.0.1」