ScriptBasic講座
[グラフィックに・・・]



1.アクセスカウンタはグラフィックじゃなくちゃ!
今までは文字でのアクセスカウンタでした。
ここでは画像表示型にします。




2.グラフィック化第一歩
-ac5.bas-
#!/usr/bin/scriba

'ファイルを開く
open "acdata.txt" for random as 1
'ロック
LOCK #1,write
'変数countに読み込み
line input #1, count
count=count+1
'ファイルの現在位置
SEEK #1,0
'書き込み
print #1,count
'ロック解除
LOCK #1,release
close 1


'表示部分です
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>",COUNT,"回目の表示です<br>アクセスカウンタを画像で表示します<br>"

for i=1 TO LEN(count)
        print "<img src=\"http://127.0.0.1/image/",MID(count,i,1),".gif\">"
NEXT


print "</body></html>"

★画像ファイル(0.gif〜9.gif)のZIP圧縮ファイルはコチラ

このプログラムを実行するに当たりhttp://127.0.0.1/image/に0.gif〜9.gifを先にいれておいてください。
0.gif〜9.gifが他の場所にある場合は、<img src=>の部分を変更してください。



表示部分のみを変更しました。
実行すると、先ほどの文字が画像になって表示されると思います。今回はサンプル画像を用意しました。



このように表示されましたか?(上は1回目の表示です)
それではF5キーの上に指を置いて更新してみましょう。Internet ExploreはF5は更新(再読み込み)です。



そしてこれが1007回目の更新(アクセス)時の画像です。
ちゃんと4桁になっていることがわかります。






3.プログラムの解説
それではac5.basの解説です。もう一度、同じプログラムを載せときます。

-ac5.bas-
#!/usr/bin/scriba

'ファイルを開く
open "acdata.txt" for random as 1
'ロック
LOCK #1,write
'変数countに読み込み
line input #1, count
count=count+1
'ファイルの現在位置
SEEK #1,0
'書き込み
print #1,count
'ロック解除
LOCK #1,release
close 1


'表示部分です
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>",COUNT,"回目の表示です<br>アクセスカウンタを画像で表示します<br>"

for i=1 TO LEN(count)
        print "<img src=\"http://127.0.0.1/image/",MID(count,i,1),".gif\">"
NEXT


print "</body></html>"
ファイル読み込み書き込み部分は前項のプログラムと同じです。ファイルロックもちゃんとしています。
変更したのは表示部分です。

まず、COUNT変数の内容を文字で表示しています。
そして、FORでループを作ります。

for i=1でiに1が代入されました。LEN()関数は文字数を返します。この場合はcountの文字数です。
例えば、COUNTが1007であれば、4文字ですのでLEN()関数は4を返します。
つまり4回ループするということです。
 ループ内のprint 命令で画像を表示します。<img>タグは画像を表示するタグです。src=""で画像ファイルの位置を指定します。
 http://127.0.0.1/image/の次のMID(count,i,1)で1文字ずつ抜き出しています。

 MID()関数は文字列の一部を抜き出す関数です。

 MID(文字列,開始位置 [,長さ])
   長さの指定は任意です。

 
 今回の開始位置には変数iが指定されています。iは最初1ですが、NEXTに到達するたびに一つ加算されます。
 長さを1と指定することにより、i文字目から1文字、つまりi文字目のみを取得することに成功しています。



▼参考リンク
文字列を加工しよう

戻る

ウメ研究所