s:string;
tmpfile:textfile;
assignfile(tmpfile, "XXXXXX");
reset(tmpfile);
while not(eof(tmpfile)) do
readln(tmpfile,s);
问题就在于这个readln读出的结果不是我要的,
有一个文本文件中不规范, 每行的回车换行中的0D,0A中少了一个0A, 结果整个文件都被一次性全部读出, 而不是一行一行地读出, DELPHI5没有问题, DELPHI6, DELPHI7都有问题, DELPHI的BUG还是故意? 望高人指点!
PS, 我一向痛恨BORLAN的东西, :)现在没有办法, 改别人的程序! 高手们别生气!!!:)
5 个解决方案
#1
这不是 Bug 是因为 Delphi6 和 Delphi7 中要兼顾 Linux 中的文本文件, Linux 中的文件文件是标准的回车换行作为行结束符, 所以会有这个问题.
解决办法就是使用 TStringList 类, 然后再使用 LoadFromFile 方法, 这样得到的行既可以使用回车做行结束符, 也可以使用回车换行做行结束符.
也可以使用 TFileStream 类和 TStringList 类结合, 然后再使用 LoadFromStream 方法.
解决办法就是使用 TStringList 类, 然后再使用 LoadFromFile 方法, 这样得到的行既可以使用回车做行结束符, 也可以使用回车换行做行结束符.
也可以使用 TFileStream 类和 TStringList 类结合, 然后再使用 LoadFromStream 方法.
#2
mark
#3
正解
#4
借问一下:如果不单要按行读文本,而且每行文本中,同时每行字串都是由|分隔
现在要将每行字串按|取得,该如何办?
现在要将每行字串按|取得,该如何办?
#5
你既然这么痛恨Borland,这Delphi不用也罢
#1
这不是 Bug 是因为 Delphi6 和 Delphi7 中要兼顾 Linux 中的文本文件, Linux 中的文件文件是标准的回车换行作为行结束符, 所以会有这个问题.
解决办法就是使用 TStringList 类, 然后再使用 LoadFromFile 方法, 这样得到的行既可以使用回车做行结束符, 也可以使用回车换行做行结束符.
也可以使用 TFileStream 类和 TStringList 类结合, 然后再使用 LoadFromStream 方法.
解决办法就是使用 TStringList 类, 然后再使用 LoadFromFile 方法, 这样得到的行既可以使用回车做行结束符, 也可以使用回车换行做行结束符.
也可以使用 TFileStream 类和 TStringList 类结合, 然后再使用 LoadFromStream 方法.
#2
mark
#3
正解
#4
借问一下:如果不单要按行读文本,而且每行文本中,同时每行字串都是由|分隔
现在要将每行字串按|取得,该如何办?
现在要将每行字串按|取得,该如何办?
#5
你既然这么痛恨Borland,这Delphi不用也罢