改行コード指定のテキストファイル保存


すぷりったー  2004-10-10 09:26:04  No: 11355

jconvert を使い、RichEdit に LF, CR, CRLF の改行コードのファイルを
読み込むことに成功しました。ところが逆に読み込んだファイルの改行
コードをそのままに保存することが出来なくて困っています。

richedit1.saveToFile を使うと、改行コードがCRLFに変換されて保存
されるので、memo を使うことにしましたが、駄目でした。実際にやった
ことを下記に記します。

memo に内容を load して

memo1.Lines.Add(ConvertReturnCode(RichEdit1.Text, LF_R));

ファイルに保存すると

memo1.Lines.SaveToFile(FILENAME);

実際に保存されたファイルは、CRLF でした。

ファイルの読み込み時は、Stream を使い直接ファイルの中身の
改行コードを取得したのですが、逆に保存するときはどのように
すればよろしいでしょうか。
識者の方々、よろしくお願いいたします。


jok  2004-10-10 11:05:46  No: 11356

こんな感じでうまくいくようです。

uses
  jconvert;

procedure SaveTextWithReturnCode(filename, str: string; Rcode: integer);
var
  ms:TMemoryStream;
  s:string;
begin
  s := ConvertReturnCode(str,Rcode);
  ms := TMemoryStream.Create;
  try
    ms.Write(s[1],Length(s));
    ms.SaveToFile(filename);
  finally
    ms.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveTextWithReturnCode('c:\CovertTest.txt',Memo1.Text,LF_R);
end;


ふぐちゃん  2004-10-10 11:09:09  No: 11357

> richedit1.saveToFile を使うと、改行コードがCRLFに変換されて保存
TRichEditのLines.SaveToFileの仕様で、保存時に必ず#13#10になります。
SaveToStreamも同様です。

var
  S: string;
begin
  S := ConvertReturnCode(RichEdit1.Lines.Text, LF_R);

このSをTFileStreamやTMemoryStreamで保存してはどうでしょうか。


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

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






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