当我使用Delphi编写文件时,它在Windows机器上,它发出的文本文件在Windows上运行正常。当我在Mac上使用它虽然它期望格式有点不同。在Mac上,换行符不同,并且无法始终读取Windows文件。
如何通过mac程序使我的文件可读?
答案 0 :(得分:26)
简单的事实是,它对所有操作系统都不同。没有“通用”换行符。你能做的最好的就是意识到差异。
答案 1 :(得分:8)
所有操作系统都没有通用换行符。你必须在某些地方使用换行,在其他地方使用回车,在其他一些地方都使用。
大多数文本编辑器可以处理多种行结尾 - 请查看您的文档。还有很多实用程序可以为您翻译行结尾。
答案 2 :(得分:4)
在系统单元中,有一个基于OS设置的全局变量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。
答案 3 :(得分:2)
答案 4 :(得分:1)
http://en.wikipedia.org/wiki/Newline
因此,您必须为MacOS编写$0D
版本9,并为MacOS X编写$0A
。
答案 5 :(得分:0)
非常老的线程仍然非常相关。 当您从不同的操作中获取文本数据时,处理此情况和其他情况的最简单方法是首先对信息进行规范化。 这是Javascript,但您应该可以轻松地将其更改为任何其他语言。
body = body.replace(/(\r\n|\r)/g,"\n");
在大多数语言中,它都可以翻译成这种语言(但在JS中,它将替换第一次出现的情况。)
body = body.replace("\r\n","\n");
body = body.replace("\r","\n");
如果要使用Windows格式的实例,只需在上面的后面添加即可,只需确保换行符由“ \ n”表示即可。
body = body.replace("\n","\r\n");