<復習、#Include,FileSystemObject,乱数ランダム>
こんにちは、三流プログラマーのKen3です。 今回は、 復習を兼ねて、 #Include File で、ファイルをインクルードする FileSystemObjectでテクストファイルの読み込み処理、 乱数でランダムな数値を発生 なんて感じのネタをやってみたいと思います。 拾い読みして、何かの参考となれば幸いです。/* * 1.今回のキッカケ */
テキスト広告のローテーションを作ってみたくて(笑) いろいろと試行錯誤した結果を兼ねて、ASP系のネタにしてみました。/* * 2.#Include File で、ファイルをインクルードする */
ASPと言っても、通常は、HTML内に<% 〜 %>でスクリプトを埋め込んでます。 a.asp <% ASP の処理A %> <html> <head> </head> <body> ヘッダ部分に目次へのリンクなど 本文 <% ASP の処理B %> フッダ、広告など <% ASP の処理C %> </body> </html> <% ASP の処理D サブルーチンなど %> まぁ、書き方のキレイさ(見易さなど) 位置によっていろいろとあるのですが、 こんな感じです。 大体、HPを作成する時、構成を決めます。 ---- 上部 HPタイトルと目次、掲示板へのリンク、、 本文があって 下部 リンクを書く人や小金稼ぎのバナー広告 ---- まぁ、わかりやすく、こんな構成だとします。 すると、上部のHTMLと下部のHTMLは変わらないんですね。 なので、ひとつの方法は、雛形のHTMLファイルを作っておいて、 それを別名でコピーして修正する、そんな方法です。 ※私も使ってます。 この方法でも良いのですが、 2・3ヶ月たってくると、広告を差し替えたいなぁ、 新しいカテゴリできたので、タイトルにリンクを増やしたい・・・ と共通だったはずのヘッダ、フッダを修正する時があります。 そんな時に便利な方法が、 #Includeを使ってASPを作る方法です。 使い方は簡単で、 <!-- #Include File="info.inc" --> と外部から挿入したいファイルを書くだけです。 具体的な使い方は、 <%@LANGUAGE=VBScript%> <html> <head> <title>ASP #Include File="xxxx.inc" でファイルをインクルード</title> </head> <body bgcolor=#ffffff text=#000000> <!-- #Include File="info.inc" --> <!-- ↑ヘッダの共通イメージをインクルード --> <h2>ASP #Include File="xxxx.inc" でファイルをインクルード</h2> test058-1.asp<br> #Include File="xxxx.inc"とファイルをインクルードして、<br> 共通のヘッダ、フッダを使う<br> <hr> [<a Href="info.inc" TARGET="_blank">info.incを開く</a>] ←使用したヘッダファイル<br> [<a Href="inc_mokuji.inc" TARGET="_blank">inc_mokuji.incを開く</a>] ←使用したフッダファイル<br> <!-- #include file="inc_mokuji.inc" --> <!-- ↑フッダの共通イメージをインクルード --> </body> </html> ポイントは、 ~~~~~~~~~~~~ <!-- #Include File="info.inc" --> ↑ヘッダの共通イメージをインクルード <!-- #include file="inc_mokuji.inc" --> ↑フッダの共通イメージをインクルード なんだぁ、一行単純に書いてるだけなのね(笑) この単純に書いた一行の処理にしていると、 ヘッダやフッダのイメージを変えたい時は、 http://www.ken3.org/cgi-bin/test/info.inc http://www.ken3.org/cgi-bin/test/inc_mokuji.inc といったファイルの中身を変更するだけで、 実行時に読み込まれるので、表示内容を変更することが出来ます。 http://www.ken3.org/cgi-bin/test/test058-1.asp でテストできます。イメージを確認してください。/* * 3.ランダムにローテーションバナーを表示させたい */
さてと、 #Include File を使うと、実行時にファイルを挿入可能なことがわかりました。 一歩進んだ要求だと(そんな要求私だけかもしれないけど) ランダムでバナー広告を切り替えて表示したい。 なんて、思うかもしれません。 乱数かぁ、、、 Randomize '乱数系を初期化 nNO = Int(Rnd * 10) で0〜9までの数を発生させられるので、 インクルードするファイルを http://www.ken3.org/cgi-bin/inc/hed0.inc http://www.ken3.org/cgi-bin/inc/hed1.inc http://www.ken3.org/cgi-bin/inc/hed2.inc ・ ・ http://www.ken3.org/cgi-bin/inc/hed9.inc とバーナー広告を10種類用意しておいて、 切り替えてインクルードしてみたいです。 <% '頭で乱数の発生 Randomize '乱数系を初期化 nNO = Int(Rnd * 10) '0〜9までの乱数を発生させる strFNAME = "/cgi-bin/inc/hed" & nNO & ".inc" 'ファイル名を作る %> とファイル名を作ってから、 <!-- #include file="<%=strFNAME%>" --> で勝負、、あれれ、 Active Server Pages エラー 'ASP 0126' インクルード ファイルが見つかりません /cgi-bin/test/test058-2.asp, 行 22 インクルード ファイル '<%=strFNAME%>' が見つかりませんでした。 あっ、バカみたい、””で囲って文字列にしてるよ、 よし、””をはずして、 <!-- #include file=<%=strFNAME%> --> Active Server Pages エラー 'ASP 0126' インクルード ファイルが見つかりません /cgi-bin/test/test058-2.asp, 行 22 インクルード ファイル 'strFNAME' が見つかりませんでした。 できないのかなぁ、 まぁ、インクルードファイルが動的に切り替わる、、 なんて用途ないしね。 自分でファイルを開いて読みますか、 <% '自分でファイルを読む ' FileSystemObjectを生成します Set objFS = Server.CreateObject("Scripting.FileSystemObject") ' strFNAMEを読取専用モードで開きデータを読む Set ts = objFS.OpenTextFile(Server.MapPath(strFNAME), 1, True) Do While ts.AtEndOfStream = False 'ファイルの終端になってない間ループ strDATA = ts.ReadLine 'ファイルからデータを一行を読む Response.Write strDATA Response.Write vbCRLF '改行する Loop '使ったファイルは閉じようよ ts.close Set objFS = Nothing %> と素直に、テキストファイルを開いて1行読み込み、出力しました。 http://www.ken3.org/cgi-bin/test/test058-2.asp でテストできます。イメージを確認してください。 ポイントは ~~~~~~~~~~ 乱数の発生前に、 Randomize '乱数系を初期化 で 乱数系の初期化。 nNO = Int(Rnd * 10) strFNAME = "/cgi-bin/inc/hed" & nNO & ".inc" 'ファイル名を作る でファイル名を作ったら、 しかたなく自分でFileSystemObjectを生成して、 .ReadLineで一行読み込む、.AtEndOfStreamでファイルの終端チェック でした。/* * 4.終わりの挨拶 </HTML> */
今回は、 ・インクルードファイルの使い方 ・乱数の発生 ・テキストファイルをFileSystemObjectで読み込み、インクルードもどき って話でした サクサクと、作成が進むと思ったのですが、 簡単な処理でもハマりました。 広告、切り替えても押されないよ(笑) http://www.ken3.org/cgi-bin/test/test058-1.asp http://www.ken3.org/cgi-bin/test/test058-2.asp でテスト可能です。 何かの参考となれば幸いです。 ASP、VBScript勉強中の三流プログラマーのKen3でした。
ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、
感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]
まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。
次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません
広告:
DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く
VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。
[三流君(TOP ken3.org へ戻る)]
/ [ASPで遊ぶ、失敗する]
/ [ASP記事 バックナンバー目次]