出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

ファイル処理、配列について   shuuさん [2002/02/27 14:41:16] [1751]
  Re:ファイル処理、配列について   Tomitomiさん [2002/02/27 15:47:20] [1753]
    Re:ファイル処理、配列について   shuuさん [2002/02/27 16:41:53] [1756]
      結果です。   shuuさん [2002/02/27 16:49:08] [1757]

[1751] ファイル処理、配列について
投稿者:shuuさん 2002/02/27 14:41:16
お久しぶりです、shuuです。またお世話になります。。。

今、コメントボード(いわゆる掲示板)を作ろうと思っているのですが、仕様が、
・DBは使わない。comment.html(ファイル)のみ。
・入力されたコメントが一番上に表示される。
・comment.htmlを月ごとに管理する。ex).200202_comment.htmlを作成し、書き込んでいく。
というもので、ファイル処理がメインなので、困っています。

先ほどまで試していた方法は、
1.配列を使い、comment.htmlをReadLineで1行ずつ読み込み、配列に格納し、
あとでfor文などを逆から回して、配列の最後からcomment.htmlに書き込み、表示する。

-- 1.のソース ---------------------------------------------
tmpFile = "d:\inetpub\wwwroot\template\" & yyyymm & "_comment.html"

'make object
Set objTOpen = Server.CreateObject("Scripting.FileSystemobject")

'make file(write only)
Set objTFile = objTOpen.openTextFile(tmpFile, 8, True, -2)

i=0
Do Until objTFile.AtEndofStream
comArray(i) = objTFile.ReadLine
i = i+1
Loop

'for文等で逆から回す。。。
-- 1.のソース ---------------------------------------------

2.ファイルポインタをファイルの最後の行にセットして、
1行ずつ戻りつつ読み込んで、comment.htmlに書き込み、表示する。
というものです。

何に困っているかというと、
1.の方は配列の使い方がいまいち分からないことです。
Micrisoftのリファレンスページ、VBScriptの部分を参考にしているのですが、エラーが消えません。
エラーが出るのは、「comArray(i) = objTFile.ReadLine」の部分で、
「型が一致しません。: 'comArray' 」と出てきます。

2.はファイルポインタをファイル末尾にセットする方法と、
読み込みたい行の指定が分からないので、
ファイルオブジェクトを作成して、ファイルオープンしたところから先に進めません。
この部分をC++で作成してみたところ、C++では作ることができました。
やはり、C++とでは、考え方がまったく違うということなのでしょうか?


うまく説明できたか不安なんですが、どなたか配列やファイルポインタについて詳しい方や、
アイディアとかありましたら、教えて下さい。
よろしくお願いします。

[1753] Re:ファイル処理、配列について
投稿者:Tomitomiさん 2002/02/27 15:47:20
こんにちは、Tomitomiです。

> 1.の方は配列の使い方がいまいち分からないことです。
> Micrisoftのリファレンスページ、VBScriptの部分を参考にしているのですが、エラーが消えません。
> エラーが出るのは、「comArray(i) = objTFile.ReadLine」の部分で、
> 「型が一致しません。: 'comArray' 」と出てきます。

配列変数は宣言しているでしょうか?

Dim comArray(配列数) とか。

配列数が動的ならば、VBScriptにあったかわかりませんが、
ReDim で配列数を変更してあげる。例:ReDim comArray(30)

i=0
Dim comArray()
ReDim comArray(i+1) 'ここで配列数は1

Do Until objTFile.AtEndofStream

comArray(i) = objTFile.ReadLine

i = i+1
ReDim comArray(i+1) 'ここで配列数を増やしてあげる

Loop

> 2.はファイルポインタをファイル末尾にセットする方法と、
> 読み込みたい行の指定が分からないので、
> ファイルオブジェクトを作成して、ファイルオープンしたところから先に進めません。
> この部分をC++で作成してみたところ、C++では作ることができました。
> やはり、C++とでは、考え方がまったく違うということなのでしょうか?

すみません。ファイルポインタもC++もわかりません。
ここは他の人にお願いしますw

[1756] Re:ファイル処理、配列について
投稿者:shuuさん 2002/02/27 16:41:53
shuuです。
Tomitomiさん、速くてわかりやすいレスをいつもありがとうございます!!

Dim comArray()とすれば動的になるのはわかっていたのですが、
> i=0
> Dim comArray()
> ReDim comArray(i+1) 'ここで配列数は1

が、抜けていました。

> i=0
> Dim comArray()
> ReDim comArray(i+1) 'ここで配列数は1
>
> Do Until objTFile.AtEndofStream
>
> comArray(i) = objTFile.ReadLine
>
> i = i+1
> ReDim comArray(i+1) 'ここで配列数を増やしてあげる
>
> Loop

の、
> ReDim comArray(i+1) 'ここで配列数を増やしてあげる
というのは、目から鱗でした。

やっと、動的な配列の仕組みが分かりました。
ありがとうございました。

[1757] 結果です。
投稿者:shuuさん 2002/02/27 16:49:08
shuuです。

嬉しさのあまり、結果を書くのを忘れました。すいません。

無事、コメントボードのファイル処理の問題は解決し、
動くようになりました。

ありがとうございました!!m(_ _)m



TreeBBS For ASP V.0.1.3
Program By YasNet