トピック

C言語で言う#DEFINEっぽい事って出来ますか?

スロット1にTEST$=”HALLO WORLD!”と書いてスロット0でそれを読み込むって事は出来ますか?
1そうだね
プレイ済み
返信[1]
親投稿
Godot orz_127
質問は #define だけど 例は extern な気がする。 とりあえずこんな感じでできるらしいですがこの VER() の使い方はヘルプ等に出ていない様です。 たまたま使えるだけで、もしかしたら、後のバージョンアップ使えなくなる可能性も。 今のところ使えてはいるようですが。
2そうだね
プレイ済み
返信[2]
親投稿
Godot orz_127
#define と言うことなので 定数を返せれば良いと認識。 関数でごまかした例w
3そうだね
プレイ済み
返信[3]
親投稿
Ϊċăņ ďо įт hikahikaru3
できます。(※ただし、スロット1であらかじめ変数を宣言しておく&USEかEXECをしておく必要あり) '例=== SLOT=1 ?VAR(STR$(SLOT)+":P") '=== この例だとスロット1のPという変数をプリントします。(PをKとかRとかに変えるとスロット1のKやRの値を知れます)
2そうだね
未プレイ
返信[4]
親投稿
SEKI22 rcftgrsfrr578
主さんってC出来るのか
2そうだね
プレイ済み
返信[5]
親投稿
Godot orz_127
USEとEXECの違いを補足。 最初の例ではEXEC、次の例ではUSEを使っています。 プチコン3号の場合、実行前に一旦プログラムを評価して中間言語(でよいのか?)としているようです。 Cで言うとコンパイル前のプリプロセッサ的な動作? EXECもUSEも別のスロットに対してそれを行いますが、EXECの場合は実行も伴います。 最初の例をUSEとするとTEST$という変数は評価済みなので認識されますが、実行が伴わないので値が代入されません。 TEST$の値は "" の初期値のままなので「?TEST$」としても何も表示されません。 EXECとすると評価後、TEST$="H…" の代入式が実行されるので、値が代入された状態となります。 後の例ではEXECとしても関数を評価して関数定義を認識させた後、実行させる部分がないので意味ないのでUSEで充分です。
5そうだね
プレイ済み
返信[6]
親投稿
データ定義を別スロットに定義することでプログラムとデータを分ける設計をしたいところですが、 プチコンのスロットって自分のスロットで参照するデータはすべて自分のスロットで持っておくって設計思想に見えます ※別スロットの変数は直接参照できない 別のスロットにデータを定義して、メインスロットで参照するのはいろいろあるけど、どれもメインスロットの変数にいったん覚えるという処理が必要になってきます。 ・VAR()に渡してスロットを超えた変数参照の式を解釈してもらってメインスロットの変数に入れる ・直接参照出来ない変数をCOMMON DEF で返してもらう(クラス設計のプロパティ扱い) ・USE <slot>してDATA文で定義してREADしてメインスロットの変数に入れる ・テキストファイルを読み込んでメインスロットの変数に入れる(設定ファイルみたいな感じ、テキストを解析する処理が必要) などなど
4そうだね
プレイ済み
返信[7]
親投稿
参考になりました、ありがとうございました。
2そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
プチコン3号はグローバル変数がスロットごとに別物として扱われるためスロットを跨いだプログラムを作る場合にはたんじぇさんが書かれているような方法でプログラムを動作させるスロットのグローバル変数に読み込ませる必要があります。 まだ書かれていない方法としては全スロット共通の変数(みたいなもの)としてCLIPBOARDがあるのでこれをうまく活用するという方法もあります。 ただし、扱えるのが文字列変数のみなので数値はSTR$を使って文字列に変換する必要があります。この際に大きな値や小数値は丸め処理が行われるため私が作ったPSTR$関数などを使用して誤差ゼロで数値を文字列に変換しなくてはなりません。 扱うのが文字列であれば丸め誤差は発生しないので難しく考える必要はありません。
4そうだね
プレイ済み