2008-10-13 Erlangかじる
0章 「日本語とGS」
ソース中の日本語
> "あ". [130,160]
一応マルチバイト文字にしてくれているようだ
-module(text). -compile(export_all). str() -> "あ".
プログラムを書いてUTF8で保存して実行してみる
> text:str(). [227,129,130]
お UTF8だ
ちなみにShift-Jisで保存したら、
[130,160]
って、そうですか、バイナリそのまま見てるんですか。
Erlangの標準パッケージに「gs」と呼ばれるものがある。
バックエンドはtkらしい。
使えれば良いなぁ と思っていたが、案の定日本語がうまく通らない。
でだ、大体こういうのは内部エンコードと、GUI上のエンコードが違ってたりするんだよね。
- xmerl_ucs:from_utf8
- xmerl_ucs:to_utf8
このあたりを使えば良さそう。
GSを使う
-module(test). -export([start/0]). start() -> I= gs:start(), W= gs:window(I,[{title,"title"},{width,300},{height,300},{map,true}]), gs:button(W,[{label, {text,"button"}},{x,100}]).
これで 「"title"」や「"button"」に日本語を混ぜたり間にfrom_utf8,to_utf8なんかを入れたりしたけど、だめだ。
GSはあきらめることにする。
tk自体は日本語が食えないわけじゃないから、どこかをいじれば直るんだろうか?
てか、Erlang暦数時間の僕にはどうしようもない。
1章 「wxErlang」
標準では入ってないけど、この前wxHaskellを使ったので少しは何とかなるだろう、という事で次はwxErlangを使うことにした。
これのサンプルがひどい、もっと小さなサンプルをくださいorz
という事で付属のサンプルを削りに削った。
Erlangの仕様も分からんのになw
-module(guitest). -compile(export_all). start() -> Wx = wx:new(), Frame= wxFrame:new(Wx,-1,xmerl_ucs:from_utf8("たいとる"),[{size, {600,800}}]), wxFrame:show(Frame), loop(Frame), wx:destroy(). loop(Frame) -> receive _ -> loop(Frame) end.
なんとこれ、日本語が表示できてます。
やったね!
loopのところは本当はイベントをキャプチャすることになるんだと思う。でもなんか動いてないな
てかマルチスレッドになってないなこれw
トラックバック - http://d.hatena.ne.jp/inajob/20081013


wxErlangにトライしてるのですが、コンパイルは通るけど、何も表示されなくて困ってます。
Erlang/OTP以外に何かインストールしなくてはいけないのでしょうか?
Windows7 64bitでインストールしたのは公式サイトの「R14B03 Windows Binary File 」なのですが。。。
よろしくお願い致しますm(__)m
自己解決致しました。
emacsからerlでコンパイル、実行してたのですが、
werlから実行するようにすればGUI表示されました。
解決おめでとうございますー