[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.058 復習、#Include,FileSystemObject,乱数ランダム

復習、#Include,FileSystemObject,乱数ランダム


本文(発行内容)


<復習、#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 でテスト可能です。 何かの参考となれば幸いです。 素朴な疑問やリクエスト、クレームなどがあったら、 掲示板 : http://www.ken3.org/cgi-bin/bbs/asp/wforum.cgi に気軽に書き込んでください。 ASP、VBScript勉強中の三流プログラマーのKen3でした。

フィードバック

ASP系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.058を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

三流君の主なリンク先

[アクセスランキング] [サイトマップ] [リンク先・相互リンク先など]
ASPで遊ぶ、失敗する 掲示板 バックナンバー 登録と解除
三流プログラマー 業務の愚痴 掲示板 バックナンバー 登録と解除
VBAで楽しくプログラミング 掲示板 バックナンバー 登録と解除
コンビニのオモテとウラ話 掲示板 バックナンバー 登録と解除
www.ken3.org(サイト内)から Google を利用して、

Ken3の日記(weblog) -- [広告・副収入系] [プログラマー業務の愚痴] [VBA系の話題] [ASP系の話題] [コンビニ系ネタ] [その他]

その他 宣伝広告