Delphi 和 Web 应用程序之间的行结尾问题

Problems with line endings between Delphi and Web application

我们正在将一些 Delphi 应用程序迁移到基于 Web 的应用程序,在此期间,一些应用程序 运行 两者都是。

我们有这样一种情况,Web 应用程序可以正确读取 Delphi 应用程序编写的换行符,但是 Delphi 应用程序在将文本保存到 Web 应用程序时会忽略换行符。

据我所知,Delphi 应用程序在任何行的末尾写入 #$D#$A。在数据库 table 中,这些被视为 CR LF

当 Web 应用程序保存保存文本块时,换行符在 Delphi 读取时变为 #$A。在数据库中,这些似乎仍然是 CR LF

想法?

你说“数据库显示”,但它实际上可能是你用来检查这个数据库的工具。我遇到了 Oracle 和 PL/SQL 开发人员的问题,其中数据库中的换行符实际上是 unix 换行符(只是换行符、LF、$A、\n,无论您喜欢哪种表示),但是数据库工具翻译这对客户端来说是 运行 on (Windows),所以它显示为 CR LF。您的工具也可以执行此操作。

Delphi 并没有进行这种神奇的翻译,实际上只是将它们阅读为 LF。

因此,要获得特定类型的换行符,您要么必须一致地存储值,要么在从数据库读回时即时转换它。

在 Delphi 中,您可以使用函数 AdjustLineBreaks 进行该转换,在保存之前或获取之后(或两者)。