• ベストアンサー

ファイル内の複数行にわたる文字ソートをしたいのですが。

おはようございます。またまた行き詰まってしまいましたので、 質問させて下さい。 会社で使用している生産管理のソフトから出されるテキストファイがあります。 内容的には製品名、ナンバー、サイズ、数量などなどです。 いろいろ調べた結果、ナンバー(登録日)でソートされています。 しかし、これでは非常に見にくいので、製品名でソートしたいと思います。 製品名は、全て数字でつけてます。51-1とかって感じです。 そのテキストファイルの表示方法は、 # No = 1 partname = 51-1 sizeX = 100 sizeY = 200 # No = 2 partname = 41-2 sizeX = 500 sizeY = 200 # という感じで並んでいます。 これを逆の並びにしたいのです。 # No = 2 partname = 41-2 sizeX = 500 sizeY = 200 # No = 1 partname = 51-1 sizeX = 100 sizeY = 200 # #間区切りの情報はそのままの状態で、パーツ名を比較させて、昇順にそのパーツ名がある、#間の情報を全て並びかえたいのです。 どのような方法でできるのでしょうか? 僕は初心者に毛が生えた程度なので、具体的な方法を示していただけると、非常にありがたいです。 どうぞ、よろしくお願い致します。

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

  • ベストアンサー
noname#60992
noname#60992
回答No.3

1回しか行わない作業(データの再利用はしない)のであれば、 リストボックスにデータをいれてソートして書き出すというのが簡単そうですね。 読み込み書き込みについては No.2さんの回答を理解していただけたら、ちょっと改造するとできます。(Line Inputを必要回数行ってください。) http://oshiete1.goo.ne.jp/kotaeru.php3?q=288368 リストボックスにデータを追加するには http://oshiete1.goo.ne.jp/kotaeru.php3?q=1876680 ソートに関しては http://oshiete1.goo.ne.jp/kotaeru.php3?q=209365 (私自身は、リストボックスでソートは行ったことがありません。 ソートが必要な際はデータを抽出する際にSQLでソートしていました。)

その他の回答 (2)

  • KG_
  • ベストアンサー率62% (34/54)
回答No.2

「#」を除いて多次元配列に読み込んだあとソートか ユーザー定義型の変数を宣言し、それを配列にしてから ソートしたあとに出力になりますかね。 #配列のソートプログラムはネット上にたくさん転がって #ますので探してみてください:)

noname#60992
noname#60992
回答No.1

作業環境などもちょっと不明ですので、何を使って(ソフト)良いのかが分かったほうが助かります。 あとは、複数の問題が含まれていますので、まず問題を整理して分からないところを具体的に質問していただいたほうが、答えやすいのですが。 手順として分かりやすいのは (1)1レコード文のデータを読み込み、レコードとして保存する。(mdbが手軽かと思いますが、使っても良いのかな?) (2)データを読み込みソートし、別に格納する。 (3)ソートされたデータを読み出し、希望する出力形式に直し出力する。 (2)と(3)は同時に行ってもかまいません。 その場合は、別途保存しなくても良いです。  どの部分が分からないのでしょうか?  

satoshi777
質問者

補足

回答ありがとうございます。 XP-proのPCでVB6を使用しています。 具体的に申しますと、 # No = 1 partname = 51-1 sizeX = 100 sizeY = 200 # テキストファイルのパーツ情報の内容を、HTMLに読み込んでるので、 その元となっているこのファイルの中身を変更すればHTML上の表示が 変わると言われまして、ファイル内の一つのパーツに関する情報の#~ #を丸ごと移動させたいのです。MDBへの格納は考えたのですが、 ここでは、4つの項目しか書いてないのですが、実際には一つのパーツ情報につき30以上の項目があります。 素人発想なのですが、まず、名前だけを全て読みこんで、ソートする、 次に、ソートした順に、各パーツ情報(#~#まで)をテキストファイルに出力しておく、もう一度、元ファイルをひらき、パーツ情報まできたら、ソート結果順に、ファイルを開き、書き込んでいくってことは可能でしょうか? すいません、うまく説明できなくて。 よろしくお願いします。

関連するQ&A