unix文本中换行符是一个字节$0a,do
s文本中是$0d$0a两个字节. 好象就这点不同
哦, 对了, 过去的dos文本有个结尾符(EOF). 不过这好象是dos3.0以前时代的事了.
就是用仍用记录块(FCB)读文件时遗留下来的, 现在都是用流来读写, 这样的带结尾
符的dos文本大概已经不存在了.
下面给出一个简单的dos到unix的转换例子, 转换中去除了所有不需要的控制符:
functiondo
sToUnix(File1, File2: string): boolean;
var
Fid1, i: integer;
buffer: string;
begin
Result:=false;
if not FileExits(File1) then
exit;
// source not found
Fid1:=FileOpen(File1, fmOpenRead);
if Fid1<=0 then
exit;
// can't open
i:=FileSeek(Fid1,0,2);
FileSeek(Fid1,0,0);
try
buffer:=SetString(Buffer, nil, i);
FileRead(Fid1, Buffer[1], i);
FileClose(Fid1);
Fid1:=FileCreate(File2);
i:=1;
while i<=length(Buffer)do
begin
if (Buffer<#32) and (Buffer<>#10) then
Delete(Buffer, i, 1)
else
Inc(i);
end;
FileWrite(Fid1, Buffer[1], Length(buffer));
Result:=true;
Finally
FileClose(Fid1);
end;
end;
同理也可写出UnixToDos.