2019年06月04日

「マウスのお供 v1.58.09」の機能強化ポイントについて

本日、「マウスのお供 v1.58.09」を公開しました。


昨日に引き続き、ポータブルモードの機能強化になります。特に、追記でも書いたとおり、これまでポータブルモードでは1行分しか保存できなかった「メモ」についても、通常(レジストリ保存)のモードと同じく、複数行保存できるようにしました。

コンボボックスで管理される編集ボックスの履歴(音声ファイルの指定履歴、時計の表示形式などの過去の指定履歴)を、ポータブルモードでも扱えるようにした件については、昨日までと同様です。

iniファイルへの文字列保存をするためのWindows API「WritePrivateProfileString()」に対して複数行の文字列を与えると、iniファイル内に改行を含んだ文字列が出力されますが、そもそも改行は、iniファイル内では設定の区切りとして扱われます。
(1行=1設定)

このため、そうやって保存したiniファイルをGetPrivateProfileString() APIで読み出しても、最初の1行しか読み取れません。
そのため、従来の「マウスのお供」では、iniファイルに書き込もうとする文字列に改行が含まれていたら、最初の1行しか書き込まないようにしておりました。

本バージョンからは、改行コード(C言語風に書くと \r \n)を見付けると、改行以外のコントロールコード \x01 に置き換えてからiniファイルへ保存します。iniファイルから文字列を読み込むときは \x01 を見付けると、 \r \n に書き換えてから読み込みます。


簡単なトリックみたいな感じですが、これで、iniファイルへの複数行の読み込みと書き込みを実現しました。
というわけで、もし、クリップボードを経由するなどして、「メモ」の中にムリヤリ \x01 に相当する文字を埋め込むと、保存したときに中途パンパな改行が書き込まれます。そういうことをやっちゃう場合は、面倒見ないです^^;


posted by ayacy at 00:00 | Comment(2) | TrackBack(0) | フリーソフト
この記事へのコメント
いっそのことiniからXMLに変えたらもっと楽に実装できるような気がするのだが。将来、iniを扱うAPIのサポートが終了することに備えてXMLやJSONなどのモダンな設定ファイルに乗り換えることを検討してみてはいかがでしょうか。
Posted by ff at 2019年06月04日 03:50
たしかにXMLという手もありますね。
不勉強で、さっき初めて調べたのですが、Windows XP以降であれば、MSXML 6という、C++からでもXMLにアクセスできるライブラリがOS標準で存在しているとのことで、それに移行するというのもアリですね。
次にiniの制限で悩むようなことが出てきたら、この方式も検討しようかと思います。
Posted by Ayacy at 2019年06月04日 12:45
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/186090791
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック