CSV形式データを構造体を使用した配列に格納する方法

解決


VB冒険隊  2005-08-31 00:55:33  No: 91883

教えてください!
VB6.0で開発を行っております!

下記の様なCSV形式データを構造体を使用した配列に一括で格納する方法はないでしょうか?

CSV
1,123
2,456
3,789

Private Type TYP_TEST
    A As String * 1
    B As String * 3
End Type

Dim DATA(2) As TYP_TEST

っという感じで宣言した"DATA(2)"になるべくinput等でループさせずに手っ取り早く格納したい!
良い方法があれば誰か教えて下さい!


KG  2005-08-31 01:30:13  No: 91884

一発で格納できるステートメントは聞いたことがありませんね。|o_o;

素直にループさせながらが一番簡単だと思うのですが、ループさせると
まずいのですか?

#このあとExcelとかAccessとかに取り込むためなら、また話は別なんで
#すけどね|^-^;


VB冒険隊  2005-08-31 01:33:54  No: 91885

KGさん御回答ありがとうございます!
現在開発中のプログラムがCSVファイルに対して頻繁にアクセスする為、迅速な処理が求められてしまうのです!

やっぱり、CSVファイルへのアクセスはOpen,Inputを使用したループ処理が妥当なんですかねー?


いな  2005-08-31 01:51:03  No: 91886

なるべくって言うことなら

一行読み込んで、Splitして
次の行を読み込んで、Splitして
っと言うように行数分の回数のInputはやむを得ないのではないかと。
値を読み込まなければ、処理できないから

#もし、改行コードがvbCrlfではなく、vbLFならば、
#Input一回で全部読み込まれるから、一発でできるんだけれどもね。


VB冒険隊  2005-08-31 02:34:08  No: 91887

いなさん、御回答ありがとうございます1

うーん!やっぱり、行数分の回数のInputはやむを得ないですか!
では、処理速度の許す限りループ処理で頑張ってみます!

皆様、ありがとうございました!


いな  2005-08-31 06:31:37  No: 91888

以下、大容量のテキストを加工する手法として、
こうゆうやり方も、あるよってことで軽く聞き流してください。

興味を持ったら、詳細をお話いたします。

1.CSVファイルを1行のファイルに変換するような
  Perl Scriptを記述する。
2.Perl ScriptをWindows上で実行できるように、Active Perl(フリー)
  をインストールしておく。
3.1.で作成したPerl Scriptを実行するようなBatファイルを作成する。
  例:@ConvCsv.pl %1
                  ↑は変換元のCSVファイルを引数で引き渡せるようにする為
4. Shell関数を利用し、3で作成したBatファイルを実行する。

作成された、1行のCSVファイルをVBからOpen,Input・・・。
コレならば、Inputの回数は1回

20Mというサイズの大きなテキストファイルで実行しても
VB単体でInputを繰り返すよりは、確実に読込性能は良いです。

#T京M菱が合併しますが、ログ解析の手法は
  上記のようVB + Perlでやっております。


ガッ  2005-08-31 06:44:04  No: 91889

VBでも無理やり1行として読み込めますよー
くわしくは、Input$()関数を調べてください。

ただし、CSVとして読み取るのではなく一つの文字列として読み取るので、
カンマ区切りをするための操作は自分で書かないといけませんが。


もげ  2005-08-31 17:21:32  No: 91890

場合よっては、ADOで読み込むという手もあります。
#構造体をわざわざ自前で定義して変更のたびにメンテするのすら
#めんどくさいし
Recordsetを連想配列の代わりにしてもよいし、
GetRowsメソッドで2次元配列にするもよし、
FlexGridに格納して利用するもよし。
http://www.bcap.co.jp/hanafusa/VBHLP/adotocsv.htm


VB冒険隊  2005-08-31 19:50:24  No: 91891

解決としてあきらめてしまった後に、たくさんの助言をありがとうございます!
皆様の助言を基にもう一度調べてみます!
本当にありがとうございました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加