http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/ugikoscr.txt ↑
上のソースをダウンロードして ugikoscr.pas と名前を変更し
プロジェクトに追加して下さい。
GikoScript.ExecToVar('1+2*3') と呼ぶだけで値 6が得られます
GikoScript.ExecToStr('1+2*3') なら文字列として結果がえられます
変数を使いたい場合は
GikoScript.LET('L1=123'); のように 変数名=式の文字列を渡して下さい
GikoScript.LET('イレテミロ ここに'); とやれば 'ここに'という変数に入力出来ます
これはギコBASICの機能がそのまま残っているからです
なお、TStringsではなく文字列で渡すので イッテヨシ とメジルシは 無効です
条件は使えますがもともと else はサポートしていません
64 :
名前は開発中のものです。:02/02/12 14:42 ID:gzEghBRd
65 :
名前は開発中のものです。:02/02/12 15:06 ID:mKw/M45Z
Delphi初めて数週間の人には
>>63のソースは難易度高過ぎかな。
見たら目眩起こすかも。
66 :
63:02/02/12 15:35 ID:???
使い方は難しくないと思うのですが? ダメですか?
67 :
63:02/02/12 15:46 ID:???
手順としては
1、ugikoscr.pas と名前を変更しプロジェクトに追加
2、uses に ugikoscr を追加
3、GikoScript.LET( '変数名=計算式'); で変数名に代入
4、GikoScript.ExecToStr( '計算式'); で計算結果が文字列として返って来ます
だけです。 他の機能を使わなければ問題ないと思います
なお、計算式中で文字列を使う場合は "" か ' ' のどちらかで囲みます。
GikoScript オブジェクトは最初に使おうとしたときにインスタンスは作成
され、プログラム終了時に解放されるので 作成、解放の手間は不要です
実は素人じゃないから問題ないだろ
69 :
名前は開発中のものです。:02/02/12 17:40 ID:NEqosGNN
多少使いづらくなるかもしれないが,アセンブラ〜のごとくに
#add a 1
#sub b 2
とかの単純四則命令で実装するというのもありかと思う。
なんにしても,
ループや,条件分岐の制御構文の仕様まで視野にいれて
考えるべきでしょう。
70 :
1 ◆xdL3JlCE :02/02/12 20:05 ID:en0HC6mI
会社から帰ってきました。
>>63さんの奴をスクリプトに組んでみました。
0005のバージョンがそうです。
http://members.tripod.co.jp/xdL3JlCE/ calコマンドで計算できます。
variコマンドは変数に値を代入。
その他細かいことはテキストに書いてます。
これでまた一つ課題が増えました。
変数を文字列の中に表示させるにはどうしたら良いのだろう・・・
test.txtの中で普通に読み込んでるテキスト部分に
「このテキストを表示したのは'i'回目です!」
ってやっても、それがそのまま表示されるし・・・
'今回で'+inttostr(i)+'回目'
72 :
名前は開発中のものです。:02/02/12 20:41 ID:IAxOkekh
>>71 それだと駄目な事ない? やってみたけど無理だった
#calstr "回数は"+toStr(i)+"です"
ところで1よ。
ノベルツールの名前はなんていうのさ。
みんなで決めていい?
名前候補
1.オマエモナー
2.アボーン
関数はソースで published の所に定義するだけで 自分で増やせるみたい
例: copy と同じ動きをする関数 MID MID("12345",2,2)で文字 "23" を返す
published の 下の toInt / toStrが並んでる所で
function MID(const dt: array of Variant): Variant;
実装部で
function TGikoScr.MID(const dt: array of Variant): Variant;
function toInt(d:Variant):Integer;begin Result:=d;end;
begin
case high(dt) of
0: Result:= VarToStr(dt[0]);
1: Result:= copy(VarToStr(dt[0]),toInt(dt[1]),High(Integer));
2: Result:= copy(VarToStr(dt[0]),toInt(dt[1]),toInt(dt[2]));
else error('変数の数が合わない');
end;
end;
>>70 2つのアイデアがあると思う
ひとつは、テキストの出る部分は必ず文字列として処理する方法
その場合、
#titile "タイトルの文字" のように""とかで囲む必要がある
もう一つは、「このテキストを表示したのは<<i>>回目です!」 みたいに
普通使わない文字をマークに使って pos 関数で "<<"が見つかったら ">>"までを 数式とみなすようにする
>76
<<>>は最萌トーナメントに見えるに一票w
>>78-79 禿同。ここって葉鍵率高いのか(´Д` )
文章改行に別の文字列(タグみたいの)を使用して、#形式のコマンドを使わせるという手もある。
>79
まぁ2ch発のツールには相応しいかもしれない…w
スクリプトの実験
#vari あなたの名前は=xxxx
#vari イレテミロ あなたの名前は
#vari name=あなたの名前は
#calstr "lこんにちは"+name+"さん"
これでダイアログが出て止まってしまう。
たぶんMscropt側でメッセージループを回していない
・・・・どう説明しよう?・・・・
単純に 先頭文字が 半角? だったら 文字列という事にしたらいいんじゃないの?
それ以外のは普通のテキストで
葉鍵が多いというか
あっちにはあっちのゲーム開発スレがある。
あとDNMLスレとかはどこのゲーム板にもあるんじゃないの?
85 :
1 ◆xdL3JlCE :02/02/12 23:11 ID:en0HC6mI
>>82 あ、本当だ。
イレテミロってやるとダイアログ出るんですね。
なんか止まっちゃってるし・・
で、変数はスクリプト式なら
$var〜っていう風に書いておいて
エンジン側で$を読み込んだら
以降の変数名に対応した文字(あるいは、数値を文字にしたもの)
に置き換える
>>85 単純に
#vari +++
とかで文法エラーでダイアログを出させるとやっぱり止まるね
88 :
名前は開発中のものです。:02/02/12 23:25 ID:IAxOkekh
いつの間にか高度になってるよ、、
89 :
1 ◆xdL3JlCE :02/02/12 23:28 ID:en0HC6mI
>>87 ダイアログあたりは全くいじってないので表示された後の処理とか何も考えてないです。
>>74 2chに依存しない名前なら決めてくれて良いですよ。
ギコbasicがわは
イレテミロは InputBox
メッセージは ShowMessage
だから 普通に処理してたら問題ないはずだと思うんだけどなあ
とりあえずフォームに
procedure Form1.GikoScrptMsg(Sender: TObject;msg:string);
begin
end;
として
GikoScript.OnMsg := GikoScrptMsg;
とすれば エラーメッセージをひっかける事は出来るみたい
>>89 >2chに依存しない名前なら
2chにこんなスレ立てて何を云うか(w
92 :
名前は開発中のものです。:02/02/13 00:23 ID:aY5NHVSN
ここの
>>1には是非頑張ってほしい。 出来ることなら協力するし
>91
まぁアナグラムにするなりなんなりするこったね。
>>89 ここで決めさせると間違いなく2ch依存な名前になると思われ。
まあ、名前決めるのもソフト作りの楽しみのひとつなので頑張ってくれ(w
95 :
1 ◆xdL3JlCE :02/02/13 01:23 ID:uHiAScDP
>>76 第2の難問変数の埋め込みですが、Pos関数で解決できるでしょうか。
ここから{〜変数〜}までを数式とみなす。
検索は出来ると思うのですが、たぶん
なんか厄介そう
>>82 ダイアログを別なのに変えて対処しておきました。
00005-2って言う実行ファイルのみのがそれです。
対策として良いのか分かりませんが。
今日はもう寝ます。
明日は会社にノーパソ持って行くのでずっと作業できます。
回線にも繋ぐのでここにもレス出来ると思う。
>>55 (゚д゚)
>>1 は会社員だったのか……。ちょっと尊敬かも。
>>1の日記ページでDelphiの存在を知ったとたんに買いに走ってるけど、パーソナル版の存在は知らないのだろうか?
会社的には「遊んでねぇで仕事しろよ、この給料泥棒」だけどな
99 :
97:02/02/13 01:42 ID:???
>>98 今日付の日記にそれらしいこと書いてるよ。
あの日記に触れたらツッコミどころが満載だからやめておけ(w