[ファイル操作]任意行の削除をするには

解決


takeshik  2004-04-06 23:25:59  No: 82898  IP: [192.*.*.*]

初めて質問させて頂きます。 よろしくお願い致します。

現在、複数行のファイルを読み書きするようなコードを書いているのですが、
任意の行を消去するアルゴリズムがうまく思い浮かびません。
任意の行だけを飛ばして書き直すという方法も考えましたが、
非常に低速になる恐れがあると考えたので、 それ以外の方法で良い物を
ご存知の方が居りましたら、 どうかご教授願います。

編集 削除
takeshik  2004-04-06 23:27:43  No: 82899  IP: [192.*.*.*]

[追加]
シーケンシャルアクセスでの読み書きで、行数は不特定です。

編集 削除
たかみちえ  URL  2004-04-06 23:43:11  No: 82900  IP: [192.*.*.*]

そうですねえ、わたしの考えつく方法は、2種類ありますが…。
一つは、リスト構造で各行を保持するということ。
行ごとに文字列を区切って、リストの各項目に格納しておきます。
行削除の際は、インデックスがふってあるならそれを参考にします。
なければ、リスト項目を、任意行までたどって行かなくてはいけなくなります。
VBにはリスト構造はない(クラスで作らないといけない)ので、そこからちょっと面倒ですが。

  もう一つは、配列を使うこと、
この場合、任意行を削除したら、その穴を埋めなくてはならないので、
残りの文字列をシフトし、ReDimしなければいけません。

編集 削除
たかみちえ  URL  2004-04-06 23:47:50  No: 82901  IP: [192.*.*.*]

そうそう、読み込み中に削除するという処理ですが、
わたしには任意行の読み飛ばし(空読み)しか思いつきませんでした。
ただ、いくつも削除項目があるなら別ですが、
そうでなければその方が、リスト構造や配列管理なんかより早いかもしれません。

編集 削除
takeshik  2004-04-07 15:04:24  No: 82902  IP: [192.*.*.*]

配列を使うという手段は思いつきませんでした。
非常に参考になりました。 ありがとうございました。

編集 削除