FScript
■概要
文字列操作,ウィンドウ表示が得意なスクリプト言語(FXL)です。ファイル
の読み書きや、LZH圧縮などの簡単なWindowsアプリケーションを作成
することができます。①インタープリタ型のスクリプト言語です
②Cライクな構文制御で記述します
③オブジェクト、プロパティ、メッソドも組み合わせで命令を記述します
④ウインドウを表示することができ、GUI部品を配置できます
⑤プロパティ、メソッド、オブジェクトは拡張DLLで追加できます
⑥単独で実行できるEXEファイルに変換できます
- とりあえず使ってみよう!
- FXL言語仕様
- EXEファイルのパッケージ
- FXLコマンドリファレンス
- サポートURL(インターネットに接続します)
このパッケージにはたくさんのサンプルが同梱されています。
まずは、サンプルの中の「HelloWorld」サンプルを動作させましょう。
インストールディレクトリにToExe.exeがありますのでこれを実行すると
*上のイメージが表示されない場合はダウンロードしたファイルをディレクトリ付で解凍しているか確認してください
と表示されますので、Hello.FXLを選択し、作成ボタンをクリックしてください。
*ラジオボタンで、作成されるEXEファイルのパッケージを指定できます。
と聞いてきます。
「はい」を選択すると、
が表示されます。
(この時、インストールフォルダにはHello.exeが作成されています。Hello.exeを実行しても同じ様になります。)
さらに、「押してね」ボタンを押すと
と表示されます。
このサンプルの作り方をWebページ
http://free01.plala.or.jp/~yfuji/FXL/fxl_kz01.htm
で解説しています。
他のサンプルも同様にして実行できますので、いろいろ試してみてください。
①sysmoni.fxl
Windowsリソースモニタのサンプルです。
Windowを最前面に固定する場合の例等の参考になると思います
②seastr.fxl
ファイルの中から特定文字をカウントするサンプルです。
FStringオブジェクトを使ったファイルの読み書きの参考にしてください
③melt.fxl
LZH圧縮ファイルを解凍・閲覧するサンプルです。ファイルをフォームにDropするかExeファイルにDropして起動してください。(動作させるにはUnlha32.DLLが必要です)
④press.fxl
LZH圧縮ファイルを圧縮するサンプルです。ファイルをフォームにDropするかExeファイルにDropして起動してください。(動作させるにはUnlha32.DLLが必要です)
⑤Selector.fxl
SYNCさんから頂いたサンプルをFScript用FXL対応にしたものです。カレントフォルダ似あるFXLファイルを選択実行できます。
デバックの時重宝すると思います
⑥LtHand.fxl
エディタのサンプルです。(FXLデザイナーに対応していません)
別ソフトとして公開しているエディタソフトです。DLLをあわせて使うとより使いやすくなります。非常に多くの項目が含まれており、コードも多いのでなれないとかなりつらいと思います。ですが、これを理解するとかなり本格的なプログラムがかけると思います。
⑦Gui_test1.fxl
GUI部品のサンプルです。
Label、ボタン、チェック、ListBox、ComboBox、EditBox、Memo、ToolBar、Popupの配置、イベントの使い方の例です。
⑧Gui_test2.fxl
以下のGUI部品のサンプルです。
ListView、TreeViewの配置、イベントの使い方の例です。
⑨Spl_test.fxl
スプリッターのサンプルです。
スプリッターは、生成される順番で配置が変わってきます。また、Activeメソッドを使わないと有効になりません。
⑩Calc.fxl
簡単な電卓のサンプルです。
あまり良いサンプルではないかもしれませんが、こんなこともできるということで、あえて例としてあげました。evalコマンドの使い方とイベントの使い方の参考にしてください。
⑪Cmd.fxl
FxEditor搭載のコマンドウインドウをシミュレートするサンプルです。
FXLの式がエディタ上でその場で評価できますのでFXLの仕様を理解するのに便利かもしれません。
また、FxEditコンポーネントの使用法が良くわかると思います当然EまたはLバージョンでしか動作しません。
⑫AppCtr.fxl
FXLで電卓などをコントロールするサンプルです。
v2.01から追加されたFndWin、SndKeyメソッドの使用例です。ちょっとソースを変更するだけで、バッチ替わりに使えると思います。
⑬Image.fxl
FXLで画像を操作するサンプルです。フォームなにかファイルをDropしてください。Dropされたファイルがcur,ico,jpeg,bmp,aniの拡張子の場合内容表示、exe,dllの場合、リソースより読み出します。その場合、#のエディットBOの数字を変えると、対応するリソースを読み出せます。
v2.01からImageに対する操作の直交性が向上しました。
LtHand.fxl以外はFXLデザイナーで再編集可能ですFXLデザイナーはGUIで部品を配置できます。
ただし、現状のFXLデザイナーではFXLの全ての性能を引き出すことができません。作成後、手修正が必要な場合があります。
FXLデザイナーのHelpは同梱されていません。FXLデザイナーの使用法は
http://free01.plala.or.jp/~yfuji/FXL/fxl_kz01.htm
のFXL講座で順次解説する予定です。内容についてのリクエストも随時受け付けています。
ToExeで作成されるEXEファイルは以下のパッケージがあります。それぞれ特徴がありますので必要に応じて選択してください。
①Hidden
GUIパーツを扱うとことができません。またLZHファイルを読み込むことができません。その代わり作成されるEXEファイルはもっとも小さくなります。イベントはTimerイベントのみ使うことができます。リソースの監視や、ファイル操作のみのプログラム等の用途に最適です。
②Normal
もっとも一般的なパッケージです。
③Extend
Normalパッケージに加えてFxEditオブジェクトが使用できます。
TreeViewのDrag&Dropが使用できます。④Full
Normalパッケージに加えて
FxEditオブジェクト、デバック機能が追加されています。
TreeViewのDrag&Dropが使用できます。
また、ImageオブジェクトがJpeg画像対応となります。
プログラムサイズはExtendとほぼ同じですが、使用メモリが30%程度多く消費されます。
⑤WCE
WindowsCEで動作します。別途CEパッケージが必要です。(SH、MIPSに対応しています)
*FXLのCE版はWindows版のサブセットになっています。いくつかのオブジェクト、プロパティは使用できません。詳しくはCEパッケージのREADMEを参照してください。
FXLは、インタープリタ型のCライクなオリジナル簡易言語で、オブジェクト指向のプロパティ、メソッドで構成されています。
式
FXLでは全ての式は文字列として評価されます。
xxx = yyy ・・・・・ 代入式です。xxxにはプロパティ、グローバル変数、yyyにはそれに加えメッソドが使用できます。
xxx == yyy ・・・・・ xxxとyyyが等しい場合に "true" となりそれ以外は "false" となります
xxx != yyy ・・・・・ xxxとyyyが等しい場合に "false" となりそれ以外は "true" となります
ステートメント
if (式) {処理 } * {}は省略できません。<=重要!
if (式) {処理 } else {{処理} * {}は省略できません。<=重要!
while (式) {処理}
評価式
”.”(ドット)は、オブジェクトへのアクセス子です。
「オブジェクト名」.「オブジェクト名」.「プロパティ名」
のように使い、オブジェクト内のメンバにアクセスするために使います。例:
main.tree.width=100;
複数の存在が認められるオブジェクトは
「オブジェクト名」(1)
等のようにして指定することもできます。例:
main(1).tree.width=100;
注意:
- 現状(FXL v1.01)では for ループはサポートしていません。(要望が多ければ対応いたします。)
- 複数の存在が認められているオブジェクトで添え字が省略された場合は、直前にアクセスされたオブジェクトが選択されます。
FXLでは、外部DLLを追加することにより、オブジェクト・プロパティ・メッソドを追加することができます。
DLLのサンプルコードはメールをいただければメールにて送付します。
メールタイトルに「拡張DLLのサンプルコード希望」と書いて送信してください。
DLLの作成には、Borland C++Builder 5.5(フリーソフトです)をお勧めします。
とてもよく解説してあるページがありますので詳細はsetbccを参照してください。
また、FXL講座にあるサンプルは、setbccをインストールした場合のバッチ(ってぜんぜんたいしたことないけど)を同梱しています。
*setbccは有馬 元嗣さんの著作物です。(Borland C++ Compiler 5.5FAQのページもあります)
C++Builderをお持ちの方はメインウィンドウの自体をコントロールするDLLを作成することができます。そのためには、メインウィンドウと、FxEditコンポーネントのヘッダファイルが必要です。必要な方はメールをください。
FXLはイベントドリブンのプログラミングが可能です。イベントは以下のタイミングでサブルーチンコールとして発行されます。サブルーチンが定義されていない場合は無視されます。
イベントの種類については同梱のRefer.txtを参照してください。
文字列型のみのサポートです。
一時変数は、
a=10;
等、”=”で値を設定することで有効になります。
このとき、変数のはじめの文字が大文字の場合は、グローバルなスコープを持つ変数になります。小文字の場合はウィンドウ固有(mainオブジェクト内のみ)の変数となります。
(実際には FString型の valueオブジェクトに追加されます。現在使用されている変数リストは、value.pos()で確認できます。)
計算を行う場合はevalメソッドを使用します
同梱されているRefer.txtにオブジェクト・メソッド・プロパティが簡単に説明されています。もっと詳しい情報が欲しい方はメールにてリクエストください。又FxEditorにもメソッドプロパティの説明書が同梱されています。またオブジェクトビューワーで利用できるオブジェクト・メソッド・プロパティが確認評価できます。