FScript

■概要

文字列操作,ウィンドウ表示が得意なスクリプト言語(FXL)です。ファイル
の読み書きや、LZH圧縮などの簡単なWindowsアプリケーションを作成
することができます。

①インタープリタ型のスクリプト言語です

②Cライクな構文制御で記述します

③オブジェクト、プロパティ、メッソドも組み合わせで命令を記述します

④ウインドウを表示することができ、GUI部品を配置できます

⑤プロパティ、メソッド、オブジェクトは拡張DLLで追加できます

⑥単独で実行できるEXEファイルに変換できます

 


 

とりあえず使ってみよう!

このパッケージにはたくさんのサンプルが同梱されています。

まずは、サンプルの中の「HelloWorld」サンプルを動作させましょう。

インストールディレクトリにToExe.execap06.jpg (1529 バイト)がありますのでこれを実行すると

*上のイメージが表示されない場合はダウンロードしたファイルをディレクトリ付で解凍しているか確認してください

と表示されますので、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講座で順次解説する予定です。内容についてのリクエストも随時受け付けています。

 

EXEファイルの種類

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言語仕様

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メソッドを使用します

 

FXLコマンドリファレンス

同梱されているRefer.txtにオブジェクト・メソッド・プロパティが簡単に説明されています。もっと詳しい情報が欲しい方はメールにてリクエストください。又FxEditorにもメソッドプロパティの説明書が同梱されています。またオブジェクトビューワーで利用できるオブジェクト・メソッド・プロパティが確認評価できます。