■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#21065-0マージ処理についてtakako2002-06-06(木) 09:01
     #21066-0RE#21065:マージ処理について2002-06-06(木) 09:19
     #21067-0RE#21065:マージ処理について匿名210672002-06-06(木) 09:54
     #21068-0RE#21067:マージ処理についてZERRY2002-06-06(木) 10:30
     #21071-0RE#21066:マージ処理について2002-06-06(木) 12:07
#21065-0
マージ処理について
併合(マージ)処理についてなのですが、入力ファイル数が5本以上(ソート済み)で
出力ファイルが1つとして併合処理を行いたいのですが、ファイルの行数単位で書き出していき
たいのですがその場合、ファイルの行数が全て違う場合どのようにマージしたらよいのでしょうか?
比べる行が無くなったら、最大値をいれて回避したいと考えていたのですが
中身が分からないので、最大値といっても良く分からないです。
初心者の質問ですみませんm(__)m
#21066-0
RE#21065:マージ処理について
> 併合(マージ)処理についてなのですが、入力ファイル数が5本以上(ソート済み)で
> 出力ファイルが1つとして併合処理を行いたいのですが、ファイルの行数単位で書き出していき
> たいのですがその場合、ファイルの行数が全て違う場合どのようにマージしたらよいのでしょうか?
> 比べる行が無くなったら、最大値をいれて回避したいと考えていたのですが
> 中身が分からないので、最大値といっても良く分からないです。
> 初心者の質問ですみませんm(__)m

単純な方法としては
    1 出力ファイルを開く
    2 入力ファイルを開く
    3 入力ファイルを終端まで一行ごとに読み込む(EOF関数を活用)
    4 読み込んだデータをその都度出力ファイルに書き込む
    5 入力ファイルを閉じる
    6 2〜5を必要なだけ繰り返す
    7 出力ファイルを閉じる
という感じですね。

基本的に、Open、Do ... Loop、While ... Wend、EOF、Line Inputあたりが
キーワードになります。
#応用編として、データをすべてバイナリとして扱い、一度にすべて取得し、
#一度に書き込むというやり方もあります。(そこまで書かないけど)
#21067-0
RE#21065:マージ処理について
> 比べる行が無くなったら、最大値をいれて回避したいと考えていたのですが
> 中身が分からないので、最大値といっても良く分からないです。

マージするKEY次第ですが、
数字ならたいてい'99999999'といった具合に
9並びにして最大値にするのだと思います。
#21068-0
RE#21067:マージ処理について
> マージするKEY次第ですが、
> 数字ならたいてい'99999999'といった具合に
> 9並びにして最大値にするのだと思います。
桁にもよりますが、
6桁の項目ならば、
1000000
と、更に一桁多くするのもありかと。。
#21071-0
RE#21066:マージ処理について
> > 併合(マージ)処理についてなのですが、入力ファイル数が5本以上(ソート済み)で
> > 出力ファイルが1つとして併合処理を行いたいのですが、ファイルの行数単位で書き出していき
> > たいのですがその場合、ファイルの行数が全て違う場合どのようにマージしたらよいのでしょうか?
> > 比べる行が無くなったら、最大値をいれて回避したいと考えていたのですが
> > 中身が分からないので、最大値といっても良く分からないです。

あ、しもた。
良く見たら私の先の記事じゃ方向性が違いました。
#File1,File2,....を順番に連結するのが先の方法。

File1の1行目
File2の1行目
........

という書き出しをしたいということですよね。
これだと、ファイル番号を動的配列に格納し、ファイル終端に達したときは
該当のファイル番号を0にするというやり方で出来るのではないでしょうか。
#ファイル番号=0の時は書き込みをしない。という条件式を使う。

もしくは、ファイルの内容をあらかじめ動的配列に格納し、この配列の
UBoundを取ることにより書き込むかどうかの判断をするという方法でも出来
るでしょう。
#ただこれはファイル容量によってはメモリを馬鹿食いするんで、あまりお勧
#めできません。

いずれのやり方でも、それぞれのファイルの行数がいくつか、ということを
意識しなくて済みます。
このページと関連する記事:
#21072-0RE#21066:マージ処理について2002-06-06(木) 13:48
#21103-0ファイルの書き出しのタイミングについて2002-06-10(月) 09:41
#1669-2シーケンシャルファイルの書き込み。2002-07-13(土) 14:15
#20915-02つ目2002-05-24(金) 00:52
#10424-0ファイルの中身を置換する方法1999-11-26(金) 11:28
#26951-0Visual Studio Installer について2000-07-31(月) 13:24
#44619-0「”」の扱い方2001-07-02(月) 16:26
#16572-0ファイル名の付け方2001-06-08(金) 17:15
#16022-0RE#16018:MSFlexGridでセルを結合するとき2000-11-07(火) 15:29
#699-1iniファイルからの読み込みが上手く来ません2004-01-05(月) 14:28
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)