TStringList и SaveToFile: как я могу сказать, чтобы перейти на новую строку, когда строка закончена? - PullRequest
1 голос
/ 07 ноября 2011

Я использую TStringList и SaveToFile. Как я могу сказать, чтобы перейти на новую строку, когда строка закончена? Как правило, все строки, содержащиеся в TStringList, сохраняются только в одну строку. Как я могу сказать списку поставить возврат каретки после окончания строки и нужно поместить другую строку в новую строку?

Строка имеет формат:

'my text....' + #10#13

Ответы [ 2 ]

4 голосов
/ 07 ноября 2011

Вы можете добавить (или вставить) пустую строку:

MyStringList.Add('');
MyStringList.SaveToFile(...);
2 голосов
/ 07 ноября 2011

Если вы пишете строки, как показано выше с помощью 'my text....' + #10#13 + 'other text...', ваша проблема в том, что у вас символы конца строки в обратном порядке.В Windows они должны быть #13#10 (или просто использовать константу sLineBreak).

Вот быстрое приложение (Delphi XE2), которое демонстрирует, что плохой порядок пары вызовет проблему,способ исправить это:

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, Classes;

var
  SL: TStringList;
begin
  SL := TStringList.Create;
  try
    SL.Add('This is a test string' + #10#13 + 'This is another test string');
    SL.SaveToFile('C:\Test\BadLFPair.txt');

    SL.Clear;
    SL.Add('This is a test string'+ #13#10 + 'This is another test string');
    SL.SaveToFile('C:\Test\BadLFPairFix.txt');
  finally
    SL.Free;
  end;
end.

Первый, при открытии в блокноте, выдает:

This is a test stringThis is another test string

Второй:

This is a test string
This is another test string
...