Что такое универсальная новая строка для всех операционных систем?(LF и CR) - PullRequest
10 голосов
/ 15 сентября 2010

Когда я пишу файл, используя Delphi, он находится на компьютере с Windows, и текстовые файлы, которые он выдает, отлично работают на Windows.Когда я использую его на Mac, он ожидает, что форматирование будет немного другим.На Mac новая строка отличается, и она не всегда может читать файлы Windows.

Как я могу сделать мои файлы читаемыми программами Mac?

Ответы [ 5 ]

26 голосов
/ 15 сентября 2010
  • Для Windows это CRLF
  • Для UNIX это LF
  • Для MAC (до версии 9) это был CR
  • Для MAC OS X это LF

Простой факт заключается в том, что он отличается для всех операционных систем. Там нет "универсальной" новой строки. Лучшее, что вы можете сделать, это знать о различиях.

8 голосов
/ 15 сентября 2010

Не существует универсальной новой строки для всех операционных систем. Для некоторых вы должны использовать перевод строки, для других - возврат каретки, а для некоторых - оба.

Большинство текстовых редакторов могут обрабатывать различные типы окончаний строк - проверьте документацию. Есть также множество утилит, которые могут переводить окончания строк для вас.

4 голосов
/ 15 сентября 2010

В системном блоке есть глобальная переменная DefaultTextLineBreakStyle, установленная на основе ОС. Это может быть tlbsLF или tlbsCRLF. Если это tlbsLF, используйте # 10, если это tlbsCRLF, используйте # 13 # 10.

Из системы:

type
  TTextLineBreakStyle = (tlbsLF, tlbsCRLF);

var   { Text output line break handling.  Default value for all text files }
  DefaultTextLineBreakStyle: TTextLineBreakStyle = 
  {$IFDEF LINUX} tlbsLF {$ENDIF}
  {$IFDEF MSWINDOWS} tlbsCRLF {$ENDIF}
  {$IFDEF MACOS} tlbsLF {$ENDIF};

Мне просто интересно, почему это var, а не const.

2 голосов
/ 15 сентября 2010

Вместо «универсальной новой строки» вы можете написать «универсальный формат», такой как JSON , XML , PDF и т. Д., В зависимости от того, предназначен ли ваш вывод для использования в качестве данных для другогопрограмма или отчетный документ для чтения людьми.

1 голос
/ 15 сентября 2010

http://en.wikipedia.org/wiki/Newline

Соответственно, вы должны написать $0D для MacOS до версии 9 и $0A для MacOS X.

...