BlockReadで、テキストファイルから指定バイト数読み込む処理をしています。
テキストファイル内の改行コードの有無を問わず、汎用的な処理をするために
ファイル内の改行コードをあらかじめ除去し、上書きし、それを読み込む方法が最適かと考えています。
WindowsなのでLF+CRであることはわかっているのですが、
このコードを除去する方法をどなたかご存じないでしょうか?
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;
StringReplace関数を使用して#13#10を''にするというのはどうでしょうか
>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;
わたしのところではうまくいきません。
間違えました(汗
うまくいきます。
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s := 'ABC'+#13#10+'123';
Memo1.Text := StringReplace(s,#13#10,'',[rfReplaceAll]);
end;
jokさん、LupinⅢさん、ありがとうございました。
どちらでもうまくいきました!
ツイート | ![]() |