第2話 複雑な処理のハズ

--------------------- 第2話 複雑な処理のハズ --------------------------


はじまり、はじまり~。


MsgBox(betweenstr(DOSCMD("type TEST1.log"), "XXXXXX", "<#cr><#cr>"))


<ぐっ! DOSコマンド!! 確かに死角だったわ。コレならFOPEN等は必要ないものね。>
<それにしても、なんて奴? コレを1行に収めてしまうなんて・・・>

<ココまでは、負けを認めるわ!でも墓穴を掘ったわね。ココからが大変よ。>
勝負なんてしてないって。

<DOSCMDを使ってしまった分。IDが取れていないからFGETなどが使えないので全て自前で>
<処理しなければならない。>
オイオイ! その後もやらせる気かよ。

<当たり前じゃん。 コレからが本当の勝負よ!>
だ・か・らぁ~

<実はアタシこの手の処理で失敗している人を見てるの>
<確かあの時は、意味不明の改行が出来てしまうとか何とか言ってたわ。>
<以外に魔物が潜んでいたりして。>
それはアンタじゃ!

<アタシは天使です!でもど~してなんだろ?>
ソレは改行が2文字であることを知らないかもしれないね。

<改行は改行じゃん1文字じゃないの?>
DOS/Windowsで改行はCR(13)とLF(10)の2文字が一組になっている。
単独で使用されても通常のエディタでは改行と解釈される。

<だから勝手に改行したように見えたんだ>
たぶん token("<#cr>", s) などと使用したのではないかな?

<そ~だったのか。でもソレだと変にならない?>
ど~して?

<だってTOKENで文字列を切り出すと区切り文字が消えるので、betweenstrで>
<挟み辛くない?>
確かに。でもなくなっていれば追加すれば良いし、だいたい1行ごとには切り出さないよ。

<えっ? 何故?>
定跡では一行ずつ切り出して、処理する。その方が安全で速いし、分かり易い。
しかし、保存用の変数や、切り出し後の前後処理で行数が増えてしまう。
何よりシンプルさに欠ける。

今回のテーマは「出来るだけ短く」だからね。
今回のようなDBから吐いたようなデータは狂わないしね。

<でもTOKENは使うんでしょ?>
ああ、切り出すと言うようリ、先に切り捨てる感覚だね。

<そろそろスクリプト見せてよ!>
あいよ。


b = betweenstr(DOSCMD("type TEST1.log"), "XXXXXX", "<#cr><#cr>")
s = ""
while token(chr(10), b) <> ""
  s = s + betweenstr(b, ": ", " <#cr>")
wend
msgbox(s)


<ゲッゲッ! マジで6行じゃん! 全部で・・・>
<信じらんない! アノ「複雑な処理」がタッタの6行?>
<しかも、どう見ても「複雑な処理」に見えない不思議さ・・・>

<ナルホロ~。改行の片割れで先に処理をするのかぁ。>
「片割れ」言うな。

<いやぁ~。今回もお姉さん一本取られたわ!>
だ・か・らぁ~

 

----------------------------------------------------------------------

提供は: ほ~ら。「簡単な処理」に見えてくる。見えてくる。 マジシャンLinersでした。

----------------------------------------------------------------------