テキストファイル内の改行コード除去方法

解決


XAX  2004-09-23 23:38:58  No: 11053

BlockReadで、テキストファイルから指定バイト数読み込む処理をしています。
テキストファイル内の改行コードの有無を問わず、汎用的な処理をするために
ファイル内の改行コードをあらかじめ除去し、上書きし、それを読み込む方法が最適かと考えています。

WindowsなのでLF+CRであることはわかっているのですが、
このコードを除去する方法をどなたかご存じないでしょうか?


jok  2004-09-24 02:19:45  No: 11054

TStringList に読み込むと自動的に改行で区切られます。ですから改行コードを
除去するには、その文字部分だけをコピーしていけばいいです。

procedure TForm1.Button1Click(Sender: TObject);
var
  SL:TStringList;
  MS:TMemoryStream;
  i:integer;
begin
  SL := TStringList.Create;
  MS := TMemoryStream.Create;
  try
    SL.LoadFromFile('c:\test.txt');
    MS.SetSize(Length(SL.Text));
    for i := 0 to SL.Count-1 do
      MS.Write(PChar(SL[i])^,Length(SL[i]));
    MS.SetSize(MS.Position);  // サイズを調整する
    MS.SaveToFile('c:\test.txt');
  finally
    SL.Free;
    MS.Free;
  end;
end;


LupinⅢ  URL  2004-09-24 21:56:53  No: 11055

StringReplace関数を使用して#13#10を''にするというのはどうでしょうか


jok  2004-09-25 00:51:49  No: 11056

>StringReplace関数を使用して#13#10を''にするというのはどうでしょうか

procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
begin
  s := 'ABC'+#13#10+'123';
  StringReplace(s,#13#10,'',[rfReplaceAll]);
  Memo1.Text := s;
end;

わたしのところではうまくいきません。


jok  2004-09-25 00:58:24  No: 11057

間違えました(汗

うまくいきます。

procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
begin
  s := 'ABC'+#13#10+'123';
  Memo1.Text := StringReplace(s,#13#10,'',[rfReplaceAll]);
end;


XAX  2004-09-29 02:58:17  No: 11058

jokさん、LupinⅢさん、ありがとうございました。
どちらでもうまくいきました!


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

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






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