テキストファイルの一部を変更して更新するにはどのようにすればいいですか?
ファイルの読み書きは理解しているのですが
例:
test.txtの中身が
Visual Basic
Visual C++
Borand Delphi
で、
Visual Basic
Perl
Borand Delphi
にするみたいな感じです。
何か情報ありましたらお願いします。
テキストファイルとはそういうものです。ファイルを全部読むか、それとも途中まで読んでやめるかしかできません(途中の行から読み始めて、途中でやめるということはできない)。
ファイルをいったん全文読み込んで、変更したい部分を見つけて、書き換えて上書き保存
しかないと思います。
さっそくのレスありがとうございます。
とりあえず、
Readln(txt, str);
でstrに読み込んだ文字列を収納しています。
そのあと、Memo1に書き出しています。(ちゃんと読めてるか確認のため(^^;))
で、さっきの例で言うと、
Visual Basic
Visual C++
Borand Delphi
のVisual C++の部分だけPerlに変更して上書きをしたいのです。
その「上書き」というのはどのようにすればいいのですか?
一度全部読み込んでそれをstr1、str2、str3へそれぞれ収納して、(今回の例では)str2がVisual C++なのでtsr2をPerlに変更し、Writelnでstr1、str2、str3としていまして…
そのまま全部読み込んで、最後に変更を加えた後、書き込み処理をすればいいだけです。
ところで、TStringListは使わないのですか?(最初にあんなこと言っておいて、何なのですけど…)
わざわざ確認にTMemoコンポーネントを使ってるのならば、
それのほうが楽で確実だと思いますけど…。
TStringListのLoadFromFileメソッドでファイルをロードできます。
その後にループ処理で文字列置き換え処理を行い、
最後にSaveToFileメソッドで上書きすればOKだと思います。
>テキストファイルとはそういうものです。ファイルを全部読むか、
>それとも途中まで読んでやめるかしかできません(途中の行から読み始めて、
>途中でやめるということはできない)。
これはちょっと違います。
ヘルプの「ファイル管理ルーチン」を参照してください。
FileWriteで指定した個所から指定した文字数文だけ更新出来ます。
StringListを使えば楽ですが、大きなファイルを更新する場合のオーバーヘッドは無視できません。
ツイート | ![]() |