いろいろなサンプルを見て、ノートパッド命令とsplitの使い方は理解できました。
sdimで文字型の配列変数を必要分準備して、repeat,loopで配列に情報を入れて
までは良かったんです。
問題は、splitの変数が文字列であるため、数値型に直す必要があります。
そこで、 intやdoubleを使うのですが、ここでよくわからないことになります。
↓練習で作ったものです。
maxenemy = 10 ;敵機の出る数
sdim buf,1000 notesel buf noteload "STG2.csv" sdim einfo,10,10 ;csvから取り出した1行の情報を入れる sdim etime,10,10 ;敵機出現時間 sdim enum,10,10 ;敵機番号 sdim epattern,10,10 ;敵機の行動パターン sdim ekind,10,10 ;敵機の種類 repeat maxenemy noteget einfo(cnt),cnt + 2 split einfo(cnt),",",etime(cnt),enum(cnt),epattern(cnt),ekind(cnt) etime(cnt) = int(etime(cnt)) ;ここで数値型にする enum(cnt) = int(enum(cnt)) epattern(cnt) = int(epattern(cnt)) ekind(cnt) = int(ekind(cnt)) loop mes enum(0) + etime(0) ;ただ数値型になったかの確認用
とまあこんな感じなんですが、
エラー31 異なる型の配列変数を代入しました。となってしまいます。
(エラー箇所はsplitの行です。)
またintの部分を外に出してみると
repeat maxenemyとしてみると、結果は 0 と出てきます。
noteget einfo(cnt),cnt + 2 split einfo(cnt),",",etime(cnt),enum(cnt),epattern(cnt),ekind(cnt) loop repeat maxenemy etime(cnt) = int(etime(cnt)) enum(cnt) = int(enum(cnt)) epattern(cnt) = int(epattern(cnt)) ekind(cnt) = int(ekind(cnt)) loop mes enum(0) + etime(0) ;ただ数値型になったかの確認用
デバックウィンドウで配列の中身を調べてみると (0)は正確な数字が入っていて
(1)〜(9)はすべて中身が0でした。
(etime,enumber,epattrn,ekindにあてはまります。)
まとめると
・上の記述では、splitでエラー(型があってない)
・下の記述では(0)以外配列の中身がすべて0になる。(もちろん本来0ではありません。)
sdimやnoteselなど初めて使ったので、特性を理解できてないなどあると思います。
どうしてこうなるのか、わかるかたは返信をよろしくお願いします。