Luaを使ってみる

 

はじめに

Luaとはスクリプト言語の一種で、他言語に組み込むことで威力を発揮します。
ここでは、Delphiから呼び出すことを前提にちびちびと書き足していきたいと思います。

Luaバイナリの入手先および日本語のマニュアル

Delphi向けLuaライブラリの選択肢

どれを使おうか悩み中

基礎の基礎

Hello World!

Delphiに組み込む前に単体での入門から。

以上の内容をhello.luaというファイル名で保存。
コマンドプロンプト上で実行。

以下の6通りの記述は、すべて同じ結果となります。

文字列の途中に改行を加えたい場合、”\n”を用います。

上記のうち、上の2行は同じ動作をしますが、最後の1行は違います。

最後の1行は、文字列をそのままその通りに扱います。例えば以下のようになります。

コメント

1行コメントと複数行コメントがあります。

VerySimple.Lua

Readme.txt内のサンプル(加工済み)

Helloworld.lua

結果表示

DelphiLua

README.md内のサンプル(加工済み)

「C = 15」と表示されれば成功です。

スクリプト関数の呼び出し

まずは、比較用にDelphiでの記述。自作アプリから該当箇所のみ抜粋。正規表現を使うのでusesにPerlRegExを追加。

DelphiからLuaスクリプトを呼び出します。usesにLua.ApiとLuaが必要。

文字列を読み込んで進捗度を返す関数です。
演算子 ~= は等値比較 (==) の否定です。
行頭がcreatedなら100、それ以外なら%の直前の数字を返します。
関数名やスクリプト名を見ればわかるように、WavPack用になってます。
WavPackの表示が少々変わってもスクリプト側で吸収できることが期待されます。

スタックの取り扱い

GetProgressは入出力が単純でした。これより多くの入出力を得ようと思った場合、スタックという機能を用います。

結果表示。

スタックに値をpushするたびにスタックの内容を表示しています。lua_toboolean関数はLuaの条件判定と同様、false と nil 以外のすべてのLuaの値に対して真を返します。



[Top]

Copyright © 2021 y.ohm / Yoshimasa Ohmuro / 大室 喜正
e-mail : y.ohm@ohmix.net
PGP Public Key : DH/DSS