すでにあるファイルに追加保存するために、memoに読み込んでaddで追加して保存することを考えました。
ところが、この方法だと1行空白行ができます。
この空白行をできないようにするにはどうしたらいいでしょうか?
また、SaveToFileのような簡単な追加保存の方法があれば教えてください。
よろしくお願いします。
var
F: TextFile;
begin
AssignFile(F, ファイル名);
Append(F);
Writeln(F, 追加したい文字列);
CloseFile(F);
end;
みたいな方法は、いかがですか?
> すでにあるファイルに追加保存するために、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 が簡単なんじゃないでしょうか。
>この空白行をできないようにするにはどうしたらいいでしょうか?
具体的な再現するサンプルコードを提示していただかないと、原因は分かりません。
元のテキストファイルの末尾が改行だったとか、あるいは追加するテキストの先頭/末尾に
改行が入っているとか、そういうことはないでしょうか?
早速回答いただきまして、ありがとうございました。
プログラムで作ったファイルに追加していたので、最初のファイルを確認していませんでした。また、改行コード#13#10を初めて使ったのですが、今までRichEditで使っていたコード+#$0Aは使えなくなりましたが、RichEdit用ですか??
igyさん、さっそく試してみます。
改行コードに関しては、
改行コード
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とかも指定できると思います。
ツイート | ![]() |