投稿
プチコンのバージョンを表示するプログラムの作り方を教えてください!
2そうだね
プレイ済み
返信[1]
親投稿
バージョン情報が格納されてるシステム変数はVERSIONです。 PRINT VERSIONと打つとバージョンが・・・50332160と出るんですよね。 どういう事かと言いますと、これは16進数で表示してるという事なのです(つまりVERSIONには16進数で格納されている)。 そこで PRINT HEX$(VERSION)と打つと、3000200と出ます。 分解すると3,00,0200となり(これはVERSIONのヘルプに書いてありました)、バージョン3.0.2という事が判明します。 ただこの数字は数値として格納されてますので、プログラムで文字列として扱う(そうでないと分解出来ない)にはまたちょっとした方法が必要ですが、ヒントはここまでです(MID$・・・いや何でもない)。
1そうだね
プレイ済み
返信[2]
親投稿
これじゃダメですよね。 Ver1.0.10 とかになったとき、ちゃんと表示されませんよね? 実は、ここで行き詰まって、質問したんです。 僕は、mk2の時からやってるので、 プチコン歴ちょうど1年です!
0そうだね
プレイ済み
返信[3]
親投稿
よく見るとMID$の書き方がおかしいですね・・・ MID$は前から基となる文、(抜きだしたい文字の)左からの文字数、何文字抜きたいかの数値ですから MID$(V$,0,1)+"."+MID$(V$,1,2)+"."+MID$(V$,3,4)でないと正しく出ないと思われます。 私のBASIC歴は過去MSXやファミリーベーシックも触ってきましたのでブランク込みで30年以上ですかね。
0そうだね
プレイ済み
返信[4]
親投稿
ちょっと思ったんですが、これって一番最後の桁だけ特殊ですよね。0200で2なら0201だとどういうことになるんだろう? 3.0.2.1? 3.0.201? とちょっと疑問に思いました
0そうだね
プレイ済み
返信[5]
親投稿
私も最初ヘルプに書いてあったのはXX.YY.ZZZZなので30,00,200(7桁なので2000にはなりません)と読んでましたが区切る所が違うの?と思ってたり。 あとHEX$は数値じゃなくて文字列で返すのだと今気付きました。そこは申し訳ないです。
0そうだね
プレイ済み
返信[6]
親投稿
とりあえず数字の表示はともかくとして桁数のことを考えると上から数えるのはバージョン頭が2桁になった時に問題があるので後ろから数えた方が良さそうですね。 LEFT$(V$,LEN(V$)-6)+"."+MID$(V$,LEN(V$)-6,2)+"."+RIGHT$(V$,4) みたいな。 てかあってるかな。たまにこの手の命令は切り出し箇所を間違える…
0そうだね
プレイ済み
返信[7]
親投稿
Godot orz_127
V=VERSION V1=V>>24 V2=(V>>16) AND 255 V3=((V>>8) AND 255) + (V AND 255) * 256 ?FORMAT$("%D.%D.%D",V1,V2,V3) 推測ですが、最後の2バイトは値がリトルエンディアンの形式で格納されているので上位と下位が入れ替わっているのかと。
0そうだね
プレイ済み
返信[8]
親投稿
あー、なるほどそういうことか<リトルエンディアン 僕も始めビット演算で出せばと思ったんですが、最後の桁が合わなかったんで止めたんですが、そういうことなら納得ですね。
0そうだね
プレイ済み
返信[9]
親投稿
Godot orz_127
もひとつ V$=HEX$(VERSION,8) V1=VAL("&H"+LEFT$(V$,2)) V2=VAL("&H"+MID$(V$,2,2)) V3=VAL("&H"+RIGHT$(V$,2)+MID$(V$,4,2)) ?FORMAT$("%D.%D.%D",V1,V2,V3)
1そうだね
プレイ済み
返信[10]
親投稿
ありがとうございます! 「もひとつ」の方は、わかりました!
0そうだね
プレイ済み