GoogleAnalytics

SyntaxHighlighter

2011年2月28日月曜日

[LabVIEW]俺のLabVIEWがZIPしか圧縮できないわけがない

またこのタイトルですw

以前のエントリで、「『統合アーカイバプロジェクト』プラグインDLLをLabVIEWから使って圧縮が出来るようにするLLBを書く予定は現在のところありませんw」とかホザいてましたが、仕事が手持ち無沙汰だったのでちょっと書いてみました。

…まぁ、ちょっと、というにはかなり手間かかったんスけどねw

ダウンロードと愚痴は続きから



まず、ライブラリのダウンロードはココから。使い方等は添付のReadme.txtとソースを読んでください。
***** 2011-02-28 追記 *****
上記ライブラリは旧バージョンです。最新版はこのエントリからダウンロードしてください。
***** 追記終了 *****



…以降、愚痴w

『統合アーカイバプロジェクト』は様々なアーカイバDLLを統一されたAPI仕様で利用出来る、というのが謳い文句なんでしょうが、なかなかどうしてこれが手こずりました。

同じAPIだけど関数名が違う、ってのは遅延バインディングでなんとかなるんです。

問題は、「実際の圧縮・解凍」操作がAPI経由じゃない、ってことです。
つまり、「DLL関数にコマンドを文字列で送って、圧縮・解凍させる」APIは統一されてるけど、そのコマンド自体がイマイチ統一されてないんですな(ここらへんの相違点については、コチラとかコチラを参照)。

ココでの作例では、この相違を吸収するためにDLL毎のコマンド(とオプション・スイッチ)を記述したコンフィグファイルを使っています(CodeZineの記事なので会員にならないと全文読めませんが…)。

個人的な見解を述べさせてもらえれば、「そんなん全然『統合』ちがうわ!」です。

まぁ嘆いてても仕方ないので、色々考えた結果、
  • 全てのアーカイバDLLに対応は諦めて、主要なものだけ対応
  • アーカイバDLLの全機能に対応は諦めて、最低限の機能にだけ対応
  • LabVIEWが持ってる『ZIPファイル操作』と同程度の機能を実装
なら、出来るだけ簡単に使えて、なおかつ、それなりに『統合』っぽくなるんではないかと考え、
  • 既存書庫ファイルの内容をプレビュー
  • 既存書庫ファイルの全ファイルをディレクトリ構造を保ちつつ指定ディレクトリへ解凍
  • 新規書庫ファイルの作成
  • 新規書庫ファイルへのファイル単体の格納
を実装しました。

また、これだけでは寂しいので、LabVIEWのZIPファイル操作より高機能な
  • 既存書庫ファイルのオープン
  • 既存書庫ファイルへのファイル単体の追加格納
  • 新規および既存書庫ファイルへの指定ディレクトリ以下の全てのファイルをディレクトリ構造を保ちつつ格納
も実装してみました。
これだけあれば、それなりに使えるものにはなってるんじゃないかと思っています。


ただ、これだけそれなりに苦労して実装したのはイイんですが、解凍に限って言えば、Susie pluginのほうが使い勝手はイイですw
また、圧縮もZIPは(機能は限定されるが)元からLabVIEWにあるし、他の圧縮方式って最近使わないしw


あんまり使いどころの無さそうなライブラリですねぇ…

0 件のコメント: