所有操作系统的通用换行符是什么?(LF和CR)

Dai*_*tsu 11 windows delphi macos newline

当我使用Delphi编写文件时,它在Windows机器上,并且它发布的文本文件在Windows上运行正常.当我在Mac上使用它虽然它期望格式有点不同.在Mac上,换行符不同,它不能始终读取Windows文件.

如何让我的文件可以被mac程序读取?

riw*_*alk 27

  • 对于Windows,它是CRLF
  • 对于UNIX,它是LF
  • 对于MAC(直到版本9),它是CR
  • 对于MAC OS X,它是LF

简单的事实是,它对所有操作系统都不同.没有"通用"换行符.你能做的最好的就是要意识到这些差异.

  • 唯一的"普遍"换行事实是没有LFCR这样的东西.这个事实可以被滥用,以便能够处理来自所有3个操作系统的文件:首先检查它是否是LF,否则如果它是CR检查下一个字符是否为LF. (4认同)
  • +1提到没有通用的方法;你应该提到http://en.wikipedia.org/wiki/Newline,因为有比你提到的更多的4个例子 (3认同)

Car*_*rum 8

所有操作系统都没有通用换行符.你必须在某些地方使用换行,在其他地方使用回车,在其他一些地方使用.

大多数文本编辑器可以处理多种行结尾 - 检查您的文档.还有很多实用程序可以为您翻译行结尾.


Too*_*the 5

在系统单元中,基于操作系统设置了全局变量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};
Run Code Online (Sandbox Code Playgroud)

我只是想知道为什么它是var而不是const。

  • 例如,它是一个变量,因此您可以编写一个处理Windows文本文件的Linux程序。只需为该变量分配一个新值,其他所有内容即可正常工作。 (3认同)
  • 同样在系统单元中,有一个sLineBreak常量,定义为{$ IFDEF LINUX}#10 {$ ENDIF} {$ IFDEF MSWINDOWS}#13#10 {$ ENDIF}。 (2认同)