2016年12月8日木曜日

LibreBasicにいま持ってる知識で立ち向かってみる  法律勉強プログラムを作ってみるの巻 第10回


書きなぐったプログラムは守れない

(;´д`)トホホ… 

<<第1回  <第9回                                                            第11回> 

→解決しました(第11回)

LibreOfficeで自作ライブラリにパスワードをかけて保護する方法を検索した。
いろいろ試したけど、安直にダイアログだけ外に出して、マクロコードを見えなくするってのは無理みたい(;・∀・) 「ご利用は計画的に」だね。

自分のオリジナルコードにパスワードを掛ける方法は、上記リンクが詳しいけども、
ここでもおさらいw

以下の方法で、自作コードをライブラリとして保護することは可能。

なのですが…
変数の有効範囲が問題になってきて、こちらの思った通りの挙動をしてくれない。
ダイアログはロックがかかっていたら表から呼び出せないので、ロックの外にしたいし、コードは守りたいし、変数の生存期間も考慮しないといけなくなったり、と。
まさに火中のクリ(;・∀・) コードをロックするつもりなら初めからそのつもりでプログラムを設計しなきゃならないな…と、思った次第。


自前のマクロにロックを掛けたければ、登る山が違う…

「Standard」にはパスワードがかからない仕様なので、
パスワードを掛けたければ、新規にライブラリ作成

作成すると、パスワードボタンがアクティブになる
 適当なパスワードを設定


盛大にハマった(進行形)技術:
パスワード有効/解除の時のライブラリの挙動の違い
正直まだ解決に至っていませんが、パスワードを掛けたライブラリと、パスワードが解除された時のライブラリの挙動の違いがイマイチ把握できておらず、デバッグに途方もなく時間がかかるので、トレースしきれていません。

感覚的には以下が絡んで動作不良を起こしているものと推定する。この辺詳しく書いてある参考資料って無いもんかなぁ…
  • 変数のスコープ(有効範囲)
  • 可視/不可視
  • ライブラリをロードするタイミングと、変数の寿命