INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
2022年7月下旬より再び本業多忙化してきているため、更新頻度は落ちます。 [2022/7/24 19:32]

目次 | ←前へ / 2019-06-04 00:00 / 次へ→ / 最新へ⇒

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

2019年 6月 4日(火) 0:00:00 [さくらのブログから転記]



RSSRSS配信中
https://www.inasoft.org/



本日、「マウスのお供 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 ff at 2019/06/04 03:50:56
いっそのことiniからXMLに変えたらもっと楽に実装できるような気がするのだが。将来、iniを扱うAPIのサポートが終了することに備えてXMLやJSONなどのモダンな設定ファイルに乗り換えることを検討してみてはいかがでしょうか。


Posted by Ayacy at 2019/06/04 12:45:57
たしかにXMLという手もありますね。
不勉強で、さっき初めて調べたのですが、Windows XP以降であれば、MSXML 6という、C++からでもXMLにアクセスできるライブラリがOS標準で存在しているとのことで、それに移行するというのもアリですね。
次にiniの制限で悩むようなことが出てきたら、この方式も検討しようかと思います。


目次 | ←前へ / 2019-06-04 00:00 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。


- 最近の更新 -



3212135 (+0046)[+0218]

Copyright© 2010-2024 INASOFT