WindowsでUnicode版のFindFirstFileのAPIを使ってみたサンプルコード

昨日のWindowsでファイル名を変更するプログラムをANSI版APIからUnicode版APIに書き換えた話で、
とりあえずリネーム処理以外のFindFirstFileというAPIのUnicode版FindFirstFileWを使ったフォルダとファイルをスキャンする使い方のサンプルコードっぽいのを晒してみる。

cmd.exeで動かすと文字化けするので、スタートメニューからPowershellを起動してPowershellで動かせば文字化けせずにUnicodeのフォルダ名やファイル名が正しく表示される。
続きを読む

Windowsでファイル名をまとめて変更するのに、C言語でプログラムを書いたのだけどUnicode文字のファイル名でハマって苦労した

Windowsでファイル名をまとめて変更しようとしていた。
で、何かスクリプト言語でちょろっと書いて一気に変換みたいなことをやろうと最初は思っていたのだけど、結局C言語でプログラムを書いてしまった。

ところがANSI版のAPIで書いたらMoveFileでうまく変更できないファイル名が出てきたので、Unicode対応のMoveFileWを使って書き直す等、もとのANSI版のAPIのプログラムをだいぶ書き直して動かした。

フォルダ内のファイルをスキャンしていくのにFindFirstFileWとFindNextFileWというAPIを使う。
使用する構造体はWIN32_FIND_DATAでなく、WIN32_FIND_DATAWを使う。

ファイル名はANSI版ならヌル文字を終端に入れたchar型の配列でよいのだけど、Unicode版はwchar_t型の配列を使う。

wchar_t配列型の文字列のフォルダ名やファイル名などを加工するのに、strcpyやstrcatが使えないので代わりにwcscpyやwcscatを使った。

文字定数は”foo”などと書く代わりにL”foo”と書いてUnicodeにしておかなければならない。

コマンドラインで動かすプログラムなのだけど、Unicodeを表示させるためにprintfでは駄目なので、printf(“%s”,str)と書くかわりにwprintfを使ってwprintf(L”%ls”,wstr)となどと書く。

cmd.exeから動かすとwprintfの表示が文字化けしてしまう。
コードページを変更するコマンドを使ってもどうもうまくいかない。
cmd.exeを使わずにPowershellで実行するとちゃんとwprintfの表示ができた。

知っている人にはきっと今更な話だが、ずっと自分はANSI版のAPIしか触ってなかったので。


つづく

ミラクルフルーツみたいな味覚hackで、苦味や渋味やエグ味とかを変換できないのだろうか

ミラクルフルーツみたいな味覚hackで、苦味や渋味やエグ味とかを変換できないのだろうか?

先日、ミラクルフルーツというのを体験した。
20160730_145807
ミラクルフルーツの果汁は、舌の味を感じる細胞に不思議な作用をして、酸味を甘みに変換してしまうらしい。
ミラクルフルーツを食べて果汁をしばらく舌につけた後、レモンなどの酸っぱいフルーツを食べると酸っぱく感じる代わりに甘く感じる。

この性質を利用してダイエット用の食品としてAmazonなどでも売っていたりする。
カロリーの高い甘いデザートの代用にミラクルフルーツと酸っぱいフルーツを食べることで、甘味を摂りたいとい欲求を低カロリーで満たすことができるということだ。
続きを読む

Swiftでglibcを使うにはどうすればいいだろうか

Swiftでglibcを使うにはどうすればいいだろうか?

SwiftのLinux版(Ubuntu版)というのがあり、Mac版やiOS版みたいなフレームワークのライブラリが無いかわりにglibcを使うことができる。

それなら逆にMac版などでも同じようにglibcを呼び出すことができるのではないだろうか?

しかし、Ubuntu版のSwiftのディレクトリのincludeの中身を探してみたのだが、それっぽいものが見つからなかった。
import Glibcとすれば、ちゃんと使えているのだけど、どこにその仕掛けがあるのだろう?


追記
Ubuntu版のSwiftのlibディレクトリをよく調べたらusr/lib/swift/linux/libswiftGlibc.soというファイルがあった。
さらにそのサブディレクトリのusr/lib/swift/linux/x86_64の中にglibc.modulemapとGlibc.swiftdocとGlibc.swiftmoduleというのがあった。
このライブラリのソースコードとかを調べてみたら何か分かるのかもしれない。


余談だが、emacsにおける新バージョンのglibcとの非互換問題はどうなったのだろう?
Emacsは衰退しました – Qiita

投げるカメラガジェットで放物線の頂点で撮影する方法は

投げるカメラガジェットで放物線の頂点で撮影する方法は、どうやっているのだろうか?

投げるカメラPanonoというのがある。

Screenshot of blog.mobilehackerz.jp

20万円の精密機械をぶん投げろ!超絶360度カメラ「Panono」レビュー

上に投げると、放物線の頂点に来た時に360度の全天周パノラマ撮影をしてくれるカメラだ。

放物線の頂点で撮影する方法について疑問に思った。
続きを読む

断捨離と減量メモ2017 その4

1/23~1/29の分。

断捨離は、先週に引き続き今週もサボってしまった。そろそろ何とかしないといけない。

減量は、エアロバイク漕ぎをやったのだが、たぶん2日ほどサボってしまったようだ。
筋トレはできていない。
結果として、今月は全然減量ができていない。

どうも低調だ。
今週は3日ほど旅行に出ていたので時間が取れなかったのと、寒さからか、強行軍の旅行の疲れのせいか、軽いカゼを引いてしまったというのがある。

ZIPPOのオイル燃料式のカイロを買って、寒さ対策で使い始めた。カゼを引いてしまう前に使い始めておけばよかったと、ちょっと後悔している。

先月から悩んでいた糖尿の薬のコレバインでの腹痛の件は、とりあえず医師に伝えてコレバインは抜きにしてみるという話になった。


追記
月末なので、体脂肪率などのカラダスキャン。
カラダスキャン

2017-01-31
体脂肪率 35.4%
内臓脂肪 25.0
基礎代謝 2003kcal
骨格筋率 26.4%
体幹皮下脂肪率 23.8%

先月に比べて、体脂肪が上がって、筋肉の割合が減っている。
減量トレーニングをサボっている結果が如実に表れている。

温度調節機能のついたヨーグルトメーカーでサツマイモを熱処理してみる

温度調節機能のついたヨーグルトメーカーでサツマイモを熱処理してみる。

サツマイモを焼き芋にする際に、65℃から70℃くらいの温度の時に酵素が働いてデンブンが糖に変化して甘くなるのだそうだ。

それならば、焼き芋を焼く前に熱処理をしておけば甘い焼き芋になるのではないかと試してみた。
Rimg0001
続きを読む

奈良県の森と水の源流館に行ってきた

奈良県の森と水の源流館に行ってきた。
(水族館に行ったメモ:シリーズ その119)
20170127_104133
奈良県の吉野地方の山の水源地 川上村のダム湖の湖畔にある施設だ。
森と水に関する展示をしており、川の淡水魚の水族館的な展示もしている。

名古屋から近鉄新春全線フリーパスを使った日帰り旅行×3の3日目の最終日だ。
続きを読む

三重県の猪の倉温泉 めだか館に行ってきた

三重県の猪の倉温泉 めだか館に行ってきた。
(水族館に行ったメモ:シリーズ その118)
20170126_151618
猪の倉温泉という温泉地にあるメダカの水槽展示をしている施設だ。販売もやっている。

名古屋から近鉄新春全線フリーパスを使った日帰り旅行×3の2日目。
大阪のとよなか四季彩園自然学習センターに行った帰りに寄った。
続きを読む