追加保存するためには??

解決


AS  2015-11-15 19:07:51  No: 47747

すでにあるファイルに追加保存するために、memoに読み込んでaddで追加して保存することを考えました。
ところが、この方法だと1行空白行ができます。
この空白行をできないようにするにはどうしたらいいでしょうか?
また、SaveToFileのような簡単な追加保存の方法があれば教えてください。
よろしくお願いします。


igy  2015-11-15 20:16:05  No: 47748

var
    F: TextFile;
begin
    AssignFile(F, ファイル名);
    Append(F);
    Writeln(F, 追加したい文字列);
    CloseFile(F);
end;

みたいな方法は、いかがですか?


Harry  2015-11-16 00:15:03  No: 47749

>  すでにあるファイルに追加保存するために、memoに読み込んでaddで追加して保存
>ところが、この方法だと1行空白行ができます。

メモとボタンを置き、以下のコードで試してみましたが、空白行は挿入されませんでした。

procedure TForm1.Button1Click(Sender: TObject);
const
  FN = 'AppendTest.txt';
  T = 'one, two, three, four, five, six, seven, eight, nine, ten, '+
      'eleven, twelve, thirteen, fourteen, fifteen, '+
      'sixteen, seventeen, eighteen, nineteen, twenty';
begin
  Memo1.Lines.LoadFromFile(FN);
  Memo1.Lines.Add(T);
  Memo1.Lines.SaveToFile(FN);
end;

テキストの追加のみの目的だったとしたら、TMemoを使用するのは不適切と思います。
同じように使える、TStringList が簡単なんじゃないでしょうか。

>この空白行をできないようにするにはどうしたらいいでしょうか?

具体的な再現するサンプルコードを提示していただかないと、原因は分かりません。
元のテキストファイルの末尾が改行だったとか、あるいは追加するテキストの先頭/末尾に
改行が入っているとか、そういうことはないでしょうか?


AS  2015-11-16 01:09:13  No: 47750

早速回答いただきまして、ありがとうございました。


AS  2015-11-16 01:47:28  No: 47751

プログラムで作ったファイルに追加していたので、最初のファイルを確認していませんでした。また、改行コード#13#10を初めて使ったのですが、今までRichEditで使っていたコード+#$0Aは使えなくなりましたが、RichEdit用ですか??


AS  2015-11-16 02:02:08  No: 47752

igyさん、さっそく試してみます。


igy  2015-11-16 04:05:13  No: 47753

改行コードに関しては、

改行コード
https://ja.wikipedia.org/wiki/%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89

とか、参考になるかと思います。

最近のDelphiでは、TStringListにはLineBreakプロパティを指定できますので、

System.Classes.TStrings.LineBreak
http://docwiki.embarcadero.com/Libraries/XE8/ja/System.Classes.TStrings.LineBreak

もし、TStringListで保存する場合、このLineBreakプロパティに#10とかも指定できると思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加