unix(linux)下的文本文件的换行符是什么?0A还是0D还是两个都有?(100分)

  • 主题发起人 主题发起人 lczhuohuo
  • 开始时间 开始时间
L

lczhuohuo

Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样来的,我想在delphi中用一个free pascal里的单元,
但是问题出来了,报错too long line,more than 1023
一想肯定是unix和windows的文本的换行符不同, 用notepad打开
也是一行到底.
但是用uedit编辑的时候又看不出来,但是uedit能正确换行,
并且从uedit中拷贝下来,然后再粘贴的话,也正确了.
unix没用过,哪位能提供一个完整的说法嘛?我的目的是,
做一个能转化的程序.
 
Unix下只有0dh, 没有0ah.
 
那为什么用uedit能看见0A呢?是不是windows读取的时候
硬给加上了,还是uedit加上的?
 
这个问题都没人回答?我要死了!!!!!!!!
 
首先:unix下只有 0A,没有0D ,前面那位刚好说反了 :-)
如果你装了 perl,在shell下:
perl -p -e 's/$//r/' < unixfile.txt >do
sfile.txt
另一个简单办法:用ftpdo
wnload你的.pas文件,选定ASCII模式,
一台机器当然没办法了。
 
呵呵,用mssql query anaysis 打开,保存为ASCII就可以了
 
UltraEdit32 有时会乱加码!
 
自己做个转换程序也行,不难的,把所有的换行符(我不记得 unix 下是什么换行
了,反正只做一个判断:if Ord(c)< 32 {一定是换行符啦}then
新文件中写入
$0D 和 $0A
试试吧,呵呵
 
各位,我需要一个比较准确的答案,比如说,如果我在
windows下打开这个文件,windows会不会加上0A,
也就是说如果我在windows下打开肯定是windows格式的呢?
只判断32以下的不行,还有其他的控制字符呢
 
自己试一下如何?
 
>>windows下打开这个文件,windows会不会加上0A,
天哪!难道没看见我的帖子? unix下只有 0A,没有0D !!!
把文件打开,按字节读入,如果不是0A,则写入另一个文件,
如果是,则在另一个文件中写入0D0A。这种程序好像
上学时学C就经常写,难道还有问题?
 
我试了,读出来的是两个都有!!!
对不起温柔一刀,我写错了,是自动加上0d,
温柔一刀,你懂我的意思吗?windows一读就给我加上了!!!
大哥们不要打击我了,你做做看!!
 
我真怀疑你是否在用原文件试验?是不是已经存过了?
>>>windows一读就给我加上了!!!
既然如此,为什么"用notepad打开也是一行到底."
为什么"报错too long line,more than 1023"?
难道notepad,delphi不是运行在windows下?
你在说什么,我已经完全不懂了。
我用程序试验了,没问题,用Delphi,下面这段程序
var
F1, F2: TextFile;
Ch: Char;
begin
AssignFile(F1, 'old.pas');
Reset(F1);
AssignFile(F2, 'new.pas');
Rewrite(F2);
while not Eof(F1)do
begin
Read(F1, Ch);
if ord(ch)=10 then
Write(F2, #13);
Write(F2, Ch);
end;
CloseFile(F2);
CloseFile(F1);
end;

把一个 "line too long,more than 1023"
的文件变得可以编译了。
 
windows一读就给我加上了>
加码的不是windows而是编辑器。写程序自己读不会如此。
 
真是不好意思,一个低级的错误,呵呵,浪费了各位的时间,
温柔一刀,研究的怎么样了?有什么心得,写信给我啊!
lidazhao@cmmail.com
 
后退
顶部