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

解決


AS  2015-11-15 19:07:51  No: 47747  IP: [192.*.*.*]

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

編集    削除
igy  2015-11-15 20:16:05  No: 47748  IP: [192.*.*.*]

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

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

編集    削除
Harry  2015-11-16 00:15:03  No: 47749  IP: [192.*.*.*]

>  すでにあるファイルに追加保存するために、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  IP: [192.*.*.*]

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

編集    削除
AS  2015-11-16 01:47:28  No: 47751  IP: [192.*.*.*]

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

編集    削除
AS  2015-11-16 02:02:08  No: 47752  IP: [192.*.*.*]

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

編集    削除
igy  2015-11-16 04:05:13  No: 47753  IP: [192.*.*.*]

改行コードに関しては、

改行コード
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とかも指定できると思います。

編集    削除