Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1 2 3 4 5 6 7 8 9 10 11 1217
次のページ(過去)
返信[2]
親投稿
bigslope bigslope
ちょっくらバーコードバトラー引っ張り出してくる(古)
1そうだね
プレイ済み
返信[4]
親投稿
bigslope bigslope
あの頃は、単なる『コンピュータが動いている』的な演出にしか思えませんでしたが、コンピュータの仕組みを知った今では、「□が2進数で0、■が1っていう風に、情報が目に見えるような形にしているんだろうなあ」なんて思ってしまいます。 多分、プチコン3号のアイコン選択時の「ピロプロポロ…」という音も。
1そうだね
プレイ済み
返信[34]
親投稿
bigslope bigslope
myu314さん> 文字形式でのセーブにはそんな制約があったんですね(改行ってCHR$(13)+CHR$(10)だと思っていたんですが)。そうなると、ここだけは数値配列に入れ直してセーブするしか無いか…。 A$[LEN(A$)-1]は、要素の最後を書き換えようとしている為ですね。とりあえず、ダミー文字を置いて、要素の最後ならないようにするという対処方法をやってみましたが、修正されるのであれば、いずれ不要になりそうですね。
0そうだね
プレイ済み
返信[28]
親投稿
bigslope bigslope
文字の1つ1つを数字に変換して数値配列に格納…なんて事をやっていたんで、この文字変数の仕様を知った瞬間、「どうしてもっと早く教えてくれなかったんだよ!」って叫んでしまいました。 数値配列から文字に戻す必要も無く、そのままPRINT A$とやれば、一発で文字列を取り出せるのも強みです。 現状ではunsigned short intですが、2要素1組として扱えばlong intとして扱えますし、符号や小数点の情報を付け加えるといった応用も出来るでしょう。 複数要素の挿入や削除も簡単なので、データベースにも使えそうですね。 ただ、仕様外の使い方なので、更新で消されるんじゃないかという心配が…。
0そうだね
プレイ済み
返信[25]
親投稿
bigslope bigslope
・数値配列と文字変数の比較 数値配列の途中に数値を挿入する場合は、通常はPUSHで増やす、FOR~NEXTを使って配列を1つずつずらす、値を挿入するという手順を踏まなければならないが、文字変数を使う事により、一発で数値の挿入が出来る。 このリストでは、100万の配列の50万番目に数値を挿入しているが、数値配列では約7.5秒かかるのに対し、文字変数を使うと、たった0.15秒で完了してしまう(ノーマル3DSで計測)。 このように、配列の数が非常に多くなるような用途では、劇的な速度の向上が期待できる。
2そうだね
プレイ済み
返信[23]
親投稿
bigslope bigslope
'COPY命令によって文字列をコピー COPY B$,A$ OK A$[2]="B" OK ?A$ 12B45 OK 'この場合はB$に影響は及ばない ?B$ 12A45 OK 'ちなみに、この方法でも良い B$=A$+"" OK
0そうだね
プレイ済み
返信[22]
親投稿
bigslope bigslope
A$="12345" OK '代入によって文字列をコピー B$=A$ OK A$[2]="A" OK ?A$ 12A45 OK 'A$を書き換えると、B$にも影響が及ぶ ?B$ 12A45 OK
0そうだね
プレイ済み
返信[21]
親投稿
bigslope bigslope
・ポインタの挙動に関する注意点 文字変数は、実態としては文字列リテラルを指し示すポインタとして扱われるので、文字変数を代入によってコピーした後で、これまでのように文字列の一部を書き換えると、コピーした文字変数にも影響が及んでしまう。 この為、文字変数をコピーする際は、そのまま代入するのではなく、配列をコピーするCOPY命令を使うこと。
0そうだね
プレイ済み
返信[20]
親投稿
bigslope bigslope
'要素数5+ダミー2文字の配列として定義し、初期値として0をセット A$=CHR$(0)*5+CHR$(0)*2 OK 'これなら一番最後にも文字を挿入出来る A$[5]=CHR$(1)+A$[5] OK FOR I=0 TO LEN(A$)-3:?ASC(A$[I]):NEXT I 0 0 0 0 0   これが挿入される 1 ←(後ろにダミー2文字あるが無視) OK
0そうだね
プレイ済み
返信[19]
親投稿
bigslope bigslope
'要素数5+ダミー文字の配列として定義し、初期値として0をセット A$=CHR$(0)*5+CHR$(0) OK '一番最後に文字を挿入する事は出来ない A$[5]=CHR$(1)+A$[5] Subscript out of range OK 'その1つ手前から追加する事は出来るが、出来れば処理を↑で統一したい A$[4]=A$[4]+CHR$(1) OK
0そうだね
プレイ済み
返信[18]
親投稿
bigslope bigslope
・添字に関する注意点(2) ダミー文字の1つ手前から文字を追加する(元の文字+挿入したい文字列)事は出来るが、ダミー文字の位置に文字を挿入する(挿入したい文字+元の文字)という形式ではエラーになる。 この為、要素の一番最後の場合と、そうでない場合で処理を分ける必要があり、プログラムが煩雑になってしまうが、ダミー文字をもう1つ追加する事でエラーを回避でき、『挿入したい文字+元の文字』で統一出来る。 配列の最大数は、文字変数なのでLEN関数で求められるが、最後の2文字はダミー扱いなので、LEN(文字変数)-1から更に2を引いた数(-3)にする。
0そうだね
プレイ済み
返信[17]
親投稿
bigslope bigslope
'要素数5+ダミー文字の配列として定義し、初期値として0をセット A$=CHR$(0)*5+CHR$(0) OK '要素の一番最後でなければCHR$も使える A$[4]=CHR$(65) OK
0そうだね
プレイ済み
返信[16]
親投稿
bigslope bigslope
'要素数5の配列として定義し、初期値として0をセット A$=CHR$(0)*5 OK '要素の一番最後にCHR$でセットしようとするとエラー A$[4]=CHR$(65) Subscript out of range OK '別の文字変数の値をセットしようとしてもエラー B$=CHR$(65):A$[4]=B$ Subscript out of range OK '文字列リテラルならばセットする事は可能だが、入れられる値が限られる A$[4]="A" OK
0そうだね
プレイ済み
返信[15]
親投稿
bigslope bigslope
・添字に関する注意点(1) CHR$を使って、要素の一番最後を書き換えようとするとエラーになるので、事実上、一番最後の要素にアクセス出来ない。 この場合、ダミー文字を最後に入れる事で、これを回避する事が出来る。
0そうだね
プレイ済み
返信[14]
親投稿
bigslope bigslope
A$[0]="" OK FOR I=0 TO LEN(A$)-1:?ASC(A$[I]):NEXT I 1 0 0 0 OK
0そうだね
プレイ済み
返信[13]
親投稿
bigslope bigslope
A$=CHR$(0)*5 OK A$[1]=CHR$(1) OK FOR I=0 TO LEN(A$)-1:?ASC(A$[I]):NEXT I 0 ←次はこれを削除 1 0 0 0 OK
0そうだね
プレイ済み
返信[12]
親投稿
bigslope bigslope
・配列の途中の数値を削除 指定した要素を、空の文字("")で書き換えれば削除され、その後ろが詰められる。
0そうだね
プレイ済み
返信[11]
親投稿
bigslope bigslope
A$[0]=CHR$(2)+A$[0] OK FOR I=0 TO LEN(A$)-1:?ASC(A$[I]):NEXT I 2 ←これが挿入される 1 ←以降、1つずつずれる 0 0 0 0 OK
0そうだね
プレイ済み
返信[10]
親投稿
bigslope bigslope
A$=CHR$(0)*5 OK A$[0]=CHR$(1) OK FOR I=0 TO LEN(A$)-1:?ASC(A$[I]):NEXT I 1 ←この場合は要素0の内容が 0  書き換えられるだけ 0 0 0 OK
0そうだね
プレイ済み
返信[9]
親投稿
bigslope bigslope
・配列の途中に数値を挿入 文字の挿入は『挿入したい文字列+元の文字』の形式で出来るので、数値を文字に変換し、それに(数値を変換した)元の文字を連結したものを代入する。
0そうだね
プレイ済み