テキストファイルを読み込んで、並べ替えて見やすくさせたいのですが、
どうやったらいいのか分かりません。
下のような中身のテキストファイルを読み込んで
040E0C01031000FFFF8F7818180080 040E0B0105(改行)
01031000 01051000(改行)
1000C0004008000800 040E0401050C00(改行)
01050C03020003(改行)
下のように並べ変えて保存をしたいです。
01031000
040E0C01031000FFFF8F7818180080
01051000
040E0B01051000C0004008000800
01050C03020003
040E0401050C00
空白の部分はTabではなく半角スペースです。
環境はVB6です。
このようにファイルの中身を操作する方法を
教えてください。
よろしくお願いします。
やるとするならば、
ファイルを1行ずつ読み込んで
Replace関数で半角スペース二つを、半角スペース一つに置換し
Split関数で区切り
配列に格納。
あとは並べ替え、
並べ替えの規則を教えてもらわないとアドバイスは難しい。。。。
何で、040E0B0105(改行)と1000C0004008000800がくっついたんだ。
to いなさん
ありがとうございます。
いなさんに書いていただいたやり方でやってみます。
to ねろさん
ごめんなさい、説明不足でした。
並べ替えの規則は
奇数行目が受
偶数行目が送
となっているのですが、それを
左から始まる数字列の優先順位が高いとして、
奇数行目を送
偶数行目を受
としたいのです。
to ねろさん
あと、040E0B0105(改行)と1000C0004008000800がくっついた理由は
040E0B01051000C0004008000800
で一つの意味のある数字列なのです。
機器がファイルを保存するときに
何文字かで改行をいれるようになっているらしく、
間の改行を抜いた状態で保存したいのです。
よろしくお願いします。
長文しつれいしました。
>いなさんに書いていただいたやり方でやってみます。
結果の報告をお願いします。
…サンプルが分かり難い。
[ボクなりの解釈]
受信1受信1 受信2受信2受(改行)
送信1送信1 送信2送信2(改行)
信2 受信3(改行)
送信3送信3(改行)
[仕様]
・バイナリファイルではなく、テキストファイルのデータです。
・奇数行目が受信データ、偶数行目が送信データです。
・データ間のスペースの数は不定です。
・データ間のスペースは半角スペースのみです。
・各行の文字列は半角スペースで終わる事はありません(?)。
・各データの文字列の長さは不定です。
・改行時、次のデータが行の先頭から始まってる場合は
前のデータの続きと判断します。(スペースが1つでも入れば次データ)
[結果]
送信1送信1
受信1受信1
送信2送信2
受信2受信2受信2
送信3送信3
受信3
[実現方法-例2]
送信データ格納用、受信データ格納用、2つの配列を用意。
送信データ編集用、受信データ編集用、2つの文字列変数を用意。
1行ずつデータを読み込み、ループ。前の行データの残りと連結して、
LTrim で先頭の空白を除き、InStrでスペースを探し、スペースが
見つからなくなるまでデータを切り取り配列に格納。ループエンド。
…をうまく調整w。最後に2つの配列のデータを交互に出力。
ツイート | ![]() |