「改行」を文字変数に格納する方法
 改行コードを文字変数に格納する方法を思いついたので。
 まず、改行のみを記述したテキストファイルを用意します。右クリックで新規作成、テキストエディタで開いたら一回エンターを押して保存。名前はcrlf.txtとでもしておきましょう。これで準備はOKです。あとは作成したファイルをreadfileで読み込めば、文字変数に改行文字が代入されます。
readfile $0,"crlf.txt"
 こんな感じですね。
 で、これを使って、試しにスクリプトを書いてみました。

*define
game

*start
saveoff

readfile $10,"crlf.txt"
mid $10,$10,0,1
readfile $0,"00.txt"

mov $2,""
csvopen "test.txt","w"
*loop
mid $1,$0,0,1
if $1 == $10 csvwrite $2:len %0,$0:mid $0,$0,2,%0:mov $2,"":goto *loop
add $2,$1
len %0,$0
if %0 <= 0 mov %1,1:csvwrite $2:csvclose:end
mid $0,$0,1,%0
goto *loop


 00.txt(つまり実行中のスクリプトそのもの)を読み込み、そのまま出力するスクリプトです。テキストファイルから$1に1バイトずつ読み込んで改行文字の前半1バイトと比較、真ならCSVに出力して2バイト進め、偽なら$2に1バイト追加します。
 csvreadだと,(カンマ)でつまづきますが、readfileだと普通に読み込めます。まぁ、単に出力するだけならreadfile+csvwriteで済むのですが。
 これで何か面白いこと、できないかなぁ。


[6月27日追記]
 上記スクリプトのsplit版を作ってみました。
*define
game

*start
saveoff

readfile $10,"crlf.txt"
mid $10,$10,0,1
readfile $0,"00.txt"

csvopen "test.txt","w"
*loop
split $0,$10,$1,$2
csvwrite $1
if $2 == "" csvclose:end
len %0,$0
len %1,$1
mid $0,$0,%1 + 1,%0
goto *loop

 さすがにこっちの方がすっきりしてますね。
[PR]
by lyricist_m | 2008-06-24 14:44 | NScripter
<< ボタン登録→画像削除→それでも... グローバル変数とsaveoff >>