{"で始まり"}で終わる複数行文字列を切りだして表示するスクリプト。
変換はだいたいこんな感じで行っています。
このスクリプトの場合コメント内文字列にも律儀に反応してしまいますが、コンバータではそうはなりません。
instr後にちゃっちゃと切りだしてしてしまえば良さそうなものですが、そうしていない理由は次のようなスクリプトに対応するためです。mes {"
この行で終わってはいけない\"}
この行で終わるべき\\"}
mes {"2バイト目が'\\'の2バイト文字には
反応しない→ソ"}
これに対して、複数行コメントの場合はこうした心配は必要ありません。// 複数行文字列を切りだすスクリプト
dialog "hsp;*.as;*.hss;*.hsh", 16
if stat == 0 : end
notesel buf
noteload refstr
bufSize = notesize
repeat bufSize
bufPos = cnt
c = peek( buf, bufPos )
if ( c == '{' ) & ( bufPos + 1 < bufSize ) {
if ( peek( buf, bufPos + 1 ) == '"' ) {
k = 0
repeat
ins = instr( buf, bufPos + k, "\"}" )
if ( ins < 0 ) {
k = bufSize - bufPos
break
}
repeat
j = peek( buf, bufPos + k + ins - cnt - 1 )
if j == '\\' : continue
if (( 129 <= j ) & ( j <= 159 )) | (( 224 <= j ) & ( j <= 252 )) {
j = cnt - 1
if ( j < 0 ) : j = 0
break
}
j = cnt
break
loop
k += ins + 2 // 2 = strlen( "\"}" )
if ( j \ 2 ) {
// まだ続く
continue
}
break
loop
s = strmid( buf, bufPos, k )
mes s
continue bufPos + k
}
}
loop
stop
2007年7月23日月曜日
(X)HTMLコンバータ (5) 複数行文字列を取得
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿