アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。vb2005を使用しています。
以下のコードでテキストファイルを各行ごとに配列に格納したのですが
以下のコードだと100行など、あらかじめ指定した数の行でないと
配列に格納できないので読み込んだテキストファイルの行数分だけ
配列に格納するにはどう改善すればよろしいでしょうか?

教えてください。お願いします。


Dim Reader As New IO.StreamReader("C:\list.txt")
Dim url(100) As String
Dim k As Integer = 0


Do While Not Reader.Peek() = -1
url(k) = Reader.ReadLine
k += 1
Loop

Reader.Close()
Reader = Nothing

A 回答 (4件)

こんにちは


配列の確保に的を絞ってアドバイスします。
この件では、動的配列を使用することになります。
Dim url(100) As String → Dim url() as String

配列の動的確保を行います。
Redim Preserve url(k) ← この文を追加
url(k) = Reader.ReadLine

こんな感じでどうでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。問題が解決しました。

お礼日時:2007/06/11 21:45

#2です。


追記ですが、配列でのみ行いたい場合も書いておきます。

ReDim Preserveを使えば動的に配列領域を確保可能です。

Dim Reader As New IO.StreamReader("C:\list.txt")
Dim url() As String
Dim k As Integer = 0


Do While Not Reader.Peek() = -1
ReDim Preserve url(k)
url(k) = Reader.ReadLine
k += 1
Loop

Reader.Close()
Reader = Nothing
    • good
    • 0
この回答へのお礼

ご親切にありがとうございます。
コレクションってボタンとかリストとかそういうものに使うものだと思っていました。勉強になりました。ありがとうございます。

お礼日時:2007/06/11 21:42

一旦、コレクションに入れる方法があります。



Dim Reader As New IO.StreamReader("C:\list.txt")
Dim aryUrl As List(Of String)
Dim url() As String
'Dim k As Integer = 0

aryUrl = New List(Of String)
Do While Not Reader.Peek() = -1
aryUrl.Add(Reader.ReadLine)
'k += 1
Loop
url = aryUrl.ToArray()

Reader.Close()
Reader = Nothing

.NETではコレクションが強化されていますので、配列を利用するより、コレクションを利用された方がよいかもしれません。
    • good
    • 0

最初にファイル全部を読み込んで、改行コードでSplitするのはどうでしょうか。

ファイルが小さい場合に限るようなきもしますが。
    • good
    • 0
この回答へのお礼

あーなるほど。そういうやり方もありますね。
勉強になります。ただ未知数の添え字に対する配列の作り方がわからないことをクリアしたいのでこのコードをちょこっと改変する形にしたいのです。よろしくお願いします。

お礼日時:2007/06/11 21:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!