この記事で扱っていること
- エイリアスでファイルを管理する方法
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
保存したデータを参照する際に、その保存元であるファイルのパスを選択する必要がありますが、ファイル名が必ずしも「わかりやすい」とは限りません。
また、ファイルパスは長くなってしまうことがあり、毎回探したり指定するのに苦労することもあるかと思います。
そんなファイル指定の悩みを解決する方法として、エイリアスの設定があります。
要は、「このファイルパスの情報にこういう名前を付けよう」という考え方で、エイリアスを指定する=そのエイリアスに紐づくファイルパスを指定する、といった操作ができるようになります。
本記事では、エイリアスを管理するためのプログラムと、エイリアスを使用して実際にファイルパスを指定できるプログラムの例を紹介しています。
どんな結果になるか
エイリアス登録のプログラムは、以下の図のように既存エイリアスリストと新規エイリアス、そのエイリアスに紐づくファイルのパスを指定するファイルパス制御器、エイリアスを追加するためのボタンと、削除するボタン、削除対象のエイリアスの(配列要素)番号を指定するための数値制御器を配置しています。
エイリアスの情報は何かしらの形で後から参照できるように、基本的にはファイルに保存しておきます。
プログラムを実行すると、エイリアス情報が記録されたファイルが存在している場合にはその内容を表示します。
例えば以下の図ではエイリアス情報として4つが登録されており、そのうちの一つ、「first」という名前のエイリアスには、PC上のある特定のパスに存在しているreadme.txtが紐づいています。
(画像では見切れていますが、実際はreadme.txtのフルパスが表示されています)
登録されているエイリアスの情報を表示する以外に、追加、削除の両方を行えるような管理画面プログラムを使ってエイリアスの情報を操作し、他のプログラムで使えるようにします。
他のプログラムで使う例は記事後半で紹介しています。
プログラムの構造
プログラムのベースはステートマシンを用いています。
複数のステートで、エイリアスとファイルパスの情報をセットにしたクラスタ、の配列を扱うため、シフトレジスタを使用していきます。
initステートでは、エイリアスリストの情報が保存されたファイルからエイリアスの情報を読み取って、クラスタにバンドルし、これをシフトレジスタに渡しています。
エイリアスリストの情報があるファイルはどのような形式でも構わないですが、今回はcsvファイルを使用しています。
また、保存先もどこでもいいのですが、複数のプログラムでこのリストを共有するような使い方をするのであれば、特定のLabVIEWプロジェクトファイルの近くではなく、ユーザドキュメントのフォルダなど、関数一つでアクセスしやすい場所が便利です。
次にeventステートです。
イベントは3つしかなく、それぞれのボタンが押されたらそれぞれのステートに飛ぶだけ、というシンプルな作りです。
次はaddステートです。
エイリアス情報が入ったクラスタをエイリアス文字列配列とファイルパス配列に整形し、ユーザーがフロントパネルで指定した新規エイリアスや対象ファイルパスと一致した項目がないかを確認しています。
1D配列検索の関数の出力が「-1」の場合、入力した配列に、入力した検索要素がなかったということになるので、既存エイリアスの配列と既存ファイルパスの配列それぞれに対して今から登録するエイリアスとファイルパスが存在しているかどうかを調べたりしています。
ブールの配列を、「ブール配列を数値に変換」関数で数値に変換することで、ケースストラクチャでそれぞれのブール値の組み合わせによる場合分けを行っています。
一致した項目がある、あるいは文字が空になっているなど、エイリアスに適さない情報がある場合には警告を出し、エイリアス情報クラスタ配列を更新しません。
次にdeleteステートです。
エイリアス情報クラスタ配列から、指定の指標番号の要素を削除するだけですね。
次にupdate displayステートです。
このステートはaddもしくはdeleteステートの後に実行されます。
文字通り、フロントパネルのエイリアスリスト表示器を最新の情報に更新します。
次にupdate fileステートです。
initで指定したのと同じファイルに今度は書き込みを行います。
initで紹介した「読み方」を行う場合には以下の図のような構成としてみてください。
最後にendステートです。
ステートマシンのWhileループを止める役割をします。
エイリアスを使用してファイルパスを指定する
では、上のプログラムで作成したエイリアス情報が載ったファイルを使用して、実際に他のプログラムでエイリアス情報を活用するためのプログラムを作っていきます。
このプログラムは、他のプログラムのサブVIとして配置しておけば、常にファイルパスをエイリアスで管理できるようになるものです。
以下がそのブロックダイアグラムです。
エイリアスの情報が載ったファイル(今回だとmyaliaslist.csv)を読み取って、その中の情報をリング制御器やファイルパス表示器に表示させ、ユーザーが選んでOKボタンを押したらプログラムが終わるようにします。
なお、このプログラムは他のプログラム中で使用できるようにVIプロパティ(ファイルメニューあるいはCtrl + Iのショートカット)でウィンドウの外観を変更しておきます。
ダイアログ設定を選べば基本的に大丈夫と思いますが、この既存設定以外の調整を行う場合にはカスタマイズを選択して細かく調整してください。
本記事では、エイリアスでファイルを管理、選択するプログラムを紹介しました。
よく使う設定ファイルだったり、参照したいデータファイルが複数ある時に、ファイル名とは別の名前を登録して使用できるようになると何かと便利なので、参考になればうれしいです。
ここまで読んでいただきありがとうございました。
コメント