• ベストアンサー

テキストファイルの各行を配列に格納するには?

お世話になります。vb6でテキストファイルを読み込み、各行を配列に格納するコードを教えて下さい。

  • mixiho
  • お礼率41% (251/608)

質問者が選んだベストアンサー

  • ベストアンサー
  • miyuyu
  • ベストアンサー率61% (30/49)
回答No.1

Private Sub Command1_Click() Dim intLoop As Integer Dim strLines() As String strLines = Get_TextLines(Text1.Text) For intLoop = LBound(strLines) To UBound(strLines) Debug.Print strLines(intLoop) Next intLoop End Sub Private Function Get_TextLines(ByVal strPathFileName As String) As String() Dim intFileNum As Integer Dim strLine() As String Dim intArrayCount As Integer intFileNum = FreeFile() intArrayCount = 0 Open strPathFileName For Input As intFileNum Do Until EOF(intFileNum) ReDim Preserve strLine(intArrayCount) Line Input #intFileNum, strLine(intArrayCount) intArrayCount = intArrayCount + 1 Loop Close intFileNum Get_TextLines = strLine End Function

mixiho
質問者

お礼

お返事ありがとうございます。 Open strPathFileName For Input As intFileNum この行でファイル名または番号が不正ですエラーがでてしまうのですが、どうしてでしょうか?

その他の回答 (1)

回答No.2

Microsoft Scripting Runtime を参照設定すれば事前バインディングでいくなら Dim lines As Variant Dim fso As New FileSystemObject lines = Split(fso.OpenTextFile("D:\test.txt").ReadAll, vbCrLf) てな感じ。 参照設定せずに遅延バインディングでいくなら Dim lines As Variant Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") lines = Split(fso.OpenTextFile("D:\test.txt").ReadAll, vbCrLf) てな感じ。

mixiho
質問者

お礼

勉強になりました。 ありがとうございます。

関連するQ&A

  • 配列にtxtファイルの各行を格納する際の問題点の解決法を教えてください。

    お世話になります。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

  • ファイルの読み込み、配列に格納

    お世話になります。Java初心者です Javaプログラムを実行する同じディレクトリにあるテキストファイルとデータファイルをコマンドラインで同時に読み込み それぞれ違う配列に格納したいのですが、1つのファイルの読み込みは出来ても2つ同時の読み込みと配列格納でつまづいています。 読み込むテキストファイルには以下のような1行の文が、 Dr. Fujita is great! 読み込むデータファイルには以下のような文字が書かれています。 AC 4C 7C 10C KC 3D 6D 9D QD JB 3C 6C 9C QC 2D 5D 8D JD JA 2C 5C 8C JC AD 4D 7D 10D KD 配列に格納する際、テキストファイルの場合は全て大文字にし、アルファベット以外の記号(スペース含)は全て消して配列に格納します。 上の例でいえばこのような状態で格納です↓ DRFUJITAISGREAT データファイルの場合は、2組1文字をそのまま配列に格納です。ただしスペースは飛ばします。 上の例でいえば、ACを配列0に、4Cを配列1に、7Cを配列2に、、、と格納していきます。 import java.io.*; public class sample{ public static void main(String[] args){ try{ FileReader f = new FileReader(args[0]); BufferedReader b = new BufferedReader(f); Strings; while((s=b.readLine())!=null){ System.out.println(s); ←読み込んでるか確認 } }catch(Exception e){ System.out.println(no file); } } } ファイルの指定は実行時に、java sample datafile.dat textfile.txt と指定します。 読み込むプログラムは以上のように書いたのですが、2つファイルを読み込むにはどのように記述したらよいのでしょうか。 FileReaderを2つ作成?しても最初に指定したデータファイルの内容がまた読み込まれるだけで・・・ 読み込んだら変数sに入りますが、たとえばs.substring()なんかでわけて配列に入れようとしても、s.substring()←ここでエラーが出てしまいます。 あと、Dr. Fujita is great!のアルファベットを大文字にし、記号(スペース含)を飛ばして格納するにはどうしたらよいのでしょうか。 宜しくお願いします

    • ベストアンサー
    • Java
  • 配列にaaaからzzzまでの17576(26の3乗)個を格納したいんですけど

    お世話になります。 配列pにaaaからzzzまでの17576通りの文字列を 格納したいんですけど、コードを教えてください。 vbのバージョンはvb6です。 よろしくお願いします。

  • テキストファイルを読み込み、行ごとに変数に格納するには?

    お世話になります。 visual basic 2005を使用しております。 テキストファイルを読み込み行ごとに変数に格納したいのですが、 コードの書き方がよくわかりません。 教えてください。 お願いします。

  • どうすればresponseText結果を配列に格納できますか?

    どうすればresponseText結果を配列に格納できますか? javascript初心者同然のものです。 今サーバー上にあるテキストファイル(10列*4行)をjavascriptで読み込み、各行を異なる一次配列に格納したいと思ってますが、。 例えば以下のように構成できればと思います。 function loadTextFile() { httpObj = createXMLHttpRequest(storeData); if (httpObj) { httpObj.open("GET", path, true); httpObj.send(null); } } // 読み込んだファイルを格納 function storeData() { if ((httpObj.readyState == 4) && (httpObj.status == 200)) { var result = httpObj.responsetext.split("\t"); ---> ここにループで配列に格納したい } }

  • C#で、ファイルのデータを取得し、配列に格納

    C#を始めたばかりで分からないことも多いため、質問させていただきます。 C#で、テキストファイルにある2進数の数値 例: 00111100 11111100 00010100 のような8桁のデータをC#でテキストファイルから2進数のまま読み取り、 配列に格納したいです。 上の例で考えると、 byte[0]に 00111100 byte[1]に 11111100 byte[2]に 00010100  のデータが入力されているような感じです。 ArrayListを使用する方法や、 バイナリファイルで読み込む方法などもあると思うのですが、 データを1行ごとに配列に入力し、 それを見た目どおり2進数として格納する方法が分かりません。 やはり、文字コードなどを参考に、 1文字ずつ格納し、引き算していくしか方法はないのでしょうか? 文章が分かりにくくて申し訳ないのですが、回答いただけるとありがたいです! よろしくお願いいたします。

  • テキストファイルから文字列を読み込んで二次元配列に格納するには

    毎回お世話になっています。 ただいまC言語を勉強中の学生です。 基本的な文法は頭に入れたつもりでしたが、まだポインタと ファイルの入出力に苦手意識があり 実際うまくできないでいるので どなたか ご存知の方にアドバイスいただければと思って書き込ませていただきます。 今回練習しているのは 先に述べたように、テキストファイルに abc def ghi jkl などと文字列を書いておき、そのファイルを読み込んで 二次元配列に格納したいのですが、何を勘違いしているのか、 うまく実現できません。 参考書などを見て 一次元配列へ格納する場合は できたようなのですが、今後このプログラムを発展させる段階で 二次元配列に文字列を 格納できたほうが好都合なので 今模索しています。。。 ちなみに 一次元配列に格納する場合は 以下のように書きました。 #include<stdio.h> #include<stdlib.h> main() { char a[10]; FILE *fp; fp = fopen("word.dat", "r"); if (fp == NULL) { printf("File does not exist.\n"); exit(1); } while(fscanf(fp,"%s",a)==1){ printf("%s\n",a); } fclose(fp); return 0; } 実はコレに関しても分からない点があり、それは 目的の配列変数 a[]に格納できたのだから それを確認したいと思い printfで a[0]~a[10]を表示してみようとしたところ 変に文字化け したものが表示されたり、何も表示されなかったり よく分からないことが起きます。私は何を勘違いしてしまっているのでしょうか(>_<) 長々と書いてしまいましたが、今回 御教授いただきたいのは (1)、テキストファイルから 英字の文字列を読み込んで二次元配列に格納するために用いるのに 一番最適な関数はどれか(fscanfやfgetsなど) そして、その関数を使って 一番シンプルな記述をするにはどのように記述すればよいのか (2)、上のようなプログラムの書き方で、配列aにテキストファイルから読み込んで格納できたようなのに、a[0]~a[10]をprintfしたときに うまく中身が表示されないのはなぜか。 という点なのですが、(1)をとりあえず急いでおりますので、(2)はおまけ程度に考えていただければと思います。 なぜかファイルの入出力がいまだに把握できなくて苦手としておりますので、どうか よろしくお願いいたします。

  • テキスト操作で各行の4文字だけを取り除きたいのですが

    お世話になります。 760行程度のテキストファイルから 各行の最初の4文字だけを抜き取りたいのですが vb.netでどのようなコーディングをすればよろしいでしょうか? 以下例です。 明日の天気はおおむね晴れです。 ですが、ところどころによっては にわか雨になるでしょう。 おでかけのさいには 傘をもたれたほうがよろしいでしょう。 お気をつけて。 (というテキストファイルがあったとして) 明日の天 ですが、 にわか雨 おでかけ 傘をもた お気をつ というように保存されるようにしたいのです。

  • 【C#】テキストファイルを2進数で取得&配列に格納

    http://okwave.jp/qa/q7812279.html 前回の質問が分かりにくかったため、もっと詳しく書いていこうと思います。 テキストファイルを1行ずつ読み取り、それをbyte型に保存したいです。 例:test.txt 01001000 01110000 01010100 11100110 01010101 ↑のような8桁の2進数がテキストファイルに記入されています。 そのテキストファイルを読み取り、 byte配列に格納したいです。 例: byte[0]に01001000 byte[1]に01110000 byte[2]に01010100 byte[3]に11100110 上記のようにデータが格納されるよう、 ファイルを読み取り、配列に入れたいと思っています。 C#初心者のため、右も左も分からないのですが、 とりあえず、やろうとしている流れを以下に書きます。 (1)ファイルを読み込む (2)ArrayListに格納 (3)データ変換(文字列を2進数に) (4)データの出力(byte型) ArrayListでなくても構わないのですが、 他にいい方法が思いつかなかったので…。 言いたいことがぐちゃぐちゃになってきたのでまとめると、 byte[0]にファイルから読み取った1行のデータ(01001011等)を byte型で入力したい。 ということです。 分からなければ、コメントお願い致します。 文章が雑で分かりにくいかもしれませんが、回答頂けると嬉しいです。

  • テキストを多次元配列に格納したい

    $text="1;2;3:4;5;6:7;8;9:10;11;12:…"; $tmp = split(":",$text); これでtmpで格納された1;2;3、4;5;6、7;8;9、10;11;12をさらに分けて、多次元配列で格納しようと思います。 すなわち多次元配列"arrayについて、 print_r($array[0])の出力結果がArray ( [0] => 1 [1] => 2 [2] => 3 ) print_r($array[2])の出力結果がArray ( [0] => 7 [1] => 8 [2] => 9 ) となるような感じです。 しかし自分ではtmpからarrayへの変換がうまくいきません。 どなたかこのような働きをするコードを教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう