2021/04/29(木) [n年前の日記]
#2 [basic] FreeBASICのGUIライブラリを試用
無償で使えるBASICコンパイラ、FreeBASIC には、window9 というGUIライブラリが存在するそうで。試しに触ってみたのだけど、これがどうも上手く行かなくて。Windows10 x64 20H2上では、ボタン上のテキストが文字化けしてしまう…。
一応、作業手順をメモ。以下の解説ページに従って作業してみた。
_GUI ライブラリ Window9 FreeBASIC
_Gui Library window9 download | SourceForge.net
_projects - Revision 10224: /Modelica/tags/v3.2.2+build.3-release/Modelica/Resources/Library
window9 を使うには32bit版の FreeBASIC が必要とのことで、FreeBASIC-1.07.3-win32.zip を入手して解凍。今まで64bit版を入れてたけど、32bit版に差し替えた。
window9.zip をDLして解凍。
Bin\Win32\UNICODE\*.a を、FreeBASICインストールフォルダ\lib\win32\ にコピー。
include\*.bi を、FreeBASICインストールフォルダ\inc\ にコピー。
zlib.zip 等をDL・解凍して、以下を入手。FreeBASICインストールフォルダ\lib\win32\ にコピー。
以下のサンプルを動かしてみる。
_FreeBASIC 言語で Window9 を使用する例
一番最初のサンプルを、colorc.bas として保存後、fbc colorc.bas と打って colorc.exe を生成した。
しかし、生成した exe を実行してみると、ボタン上のテキストが文字化けしている。
ソースの文字コードを SJIS や UTF-8 にしてみたが、違う化け方はするものの、文字化けしたまま。それどころか、ソース内の日本語文字列を全部無くして英数字のみにしても、文字化けしている。おかしい。ASCIIしか使ってないのに…。
結局、以下のような状態にしたら、文字化けしない状態になった。
また、以下のページで紹介されているサンプルも、そのままでは動作しなかった。コンパイルはできるが、実行しても何も出てこない。
_GUI ライブラリ Window9 FreeBASIC
日本語文字列は全て英数字にして、かつ、実際に存在するパスを指定してみたら、動いてくれた。
現状、Windows10上で、FreeBASIC + window9 を使う場合、日本語文字列が一切使えないものと思っておいたほうがいいのかもしれない…。
一応、作業手順をメモ。以下の解説ページに従って作業してみた。
_GUI ライブラリ Window9 FreeBASIC
_Gui Library window9 download | SourceForge.net
_projects - Revision 10224: /Modelica/tags/v3.2.2+build.3-release/Modelica/Resources/Library
window9 を使うには32bit版の FreeBASIC が必要とのことで、FreeBASIC-1.07.3-win32.zip を入手して解凍。今まで64bit版を入れてたけど、32bit版に差し替えた。
window9.zip をDLして解凍。
Bin\Win32\UNICODE\*.a を、FreeBASICインストールフォルダ\lib\win32\ にコピー。
libLinked_Lists.a libwindow9.a
include\*.bi を、FreeBASICインストールフォルダ\inc\ にコピー。
extwstring.bi Linked_Lists.bi Window9.bizlib.bi はコピー先に既に存在していたので、コピーしなかった。
zlib.zip 等をDL・解凍して、以下を入手。FreeBASICインストールフォルダ\lib\win32\ にコピー。
libz.a libzlib.a libz.dll.a
以下のサンプルを動かしてみる。
_FreeBASIC 言語で Window9 を使用する例
一番最初のサンプルを、colorc.bas として保存後、fbc colorc.bas と打って colorc.exe を生成した。
しかし、生成した exe を実行してみると、ボタン上のテキストが文字化けしている。
ソースの文字コードを SJIS や UTF-8 にしてみたが、違う化け方はするものの、文字化けしたまま。それどころか、ソース内の日本語文字列を全部無くして英数字のみにしても、文字化けしている。おかしい。ASCIIしか使ってないのに…。
結局、以下のような状態にしたら、文字化けしない状態になった。
- ソース内から日本語文字列を全部無くす。
- かつ、window9 の Bin\Win32\ASCII\*.a を FreeBASICインストールフォルダ\lib\win32\ にコピー。
また、以下のページで紹介されているサンプルも、そのままでは動作しなかった。コンパイルはできるが、実行しても何も出てこない。
_GUI ライブラリ Window9 FreeBASIC
日本語文字列は全て英数字にして、かつ、実際に存在するパスを指定してみたら、動いてくれた。
現状、Windows10上で、FreeBASIC + window9 を使う場合、日本語文字列が一切使えないものと思っておいたほうがいいのかもしれない…。
◎ 解決策が分かった。 :
その後もしつこく試してたら、解決策が分かった。どうやらソースの文字コードをSJISにすれば済んでしまうらしい。
これで、日本語文字列も文字化けせずに表示できる模様。
「この手のソレってフツーは Unicode (UTF-8) を使うものだろう」と、すっかり思い込んでしまって、かえってハマってしまった…。
- window9 の Bin\Win32\ASCII\*.a を使う。UNICODE\*.a は選ばない。
- かつ、ソースの文字コードは SJIS にする。
これで、日本語文字列も文字化けせずに表示できる模様。
「この手のソレってフツーは Unicode (UTF-8) を使うものだろう」と、すっかり思い込んでしまって、かえってハマってしまった…。
[ ツッコむ ]
以上です。