如何判断文件为文本文件,比如*.ini 。(20分)

  • 主题发起人 主题发起人 wy0311
  • 开始时间 开始时间
文件头。用16进制编辑器看一下
 
我是指在程序中判断。
 
找到非回车换行符的非显示字符就不是文本文件。
 
KKYY说的有点问题,如果是中文的话,也会出现你说的情况:)
我也想知道有什么办法可以判断,UE就可以判断,
 
是文件头肯定不行的了,我已经用UE试过。不用文件头,以什么为根据来判断?[?]
 
我想是UE一个一个字符判断了的,我前几天用UE修改了一个ASC2码文件,改了一个字符的
ASC码,再打开就不是文本文件了
 
有谁可以说得详细点吗?
 
循环所有字符,找到一个控制符就不是了。
 
哈哈,我想起来了,文本文件和非文本文件没有绝对的区别,
 
Function isAscii(NomeFile: String): Boolean;

const

Sett=2048;

var

i: Integer;

F: file;

a: Boolean;

TotSize

IncSize

ReadSize: Integer;

c: Array[0..Sett] of byte;


begin

If FileExists(NomeFile) then

begin

{$I-}

AssignFile(F

NomeFile);

Reset(F

1);

TotSize:=FileSize(F);


IncSize:=0;

a:=true;


while (IncSize begin

ReadSize:=Sett;

If IncSize+ReadSize>TotSize then ReadSize:=TotSize-IncSize;

IncSize:=IncSize+ReadSize;

BlockRead(F

c

ReadSize);

For i := 0 to ReadSize-1 do // Iterate

If (c<32) and (not (c in [9

10

13

26])) then a:=False;

end; // while

CloseFile(F);

{$I+}

If IOResult<>0 then Result:=False

else Result:=a;

end;

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

if OpenDialog1.Execute then

begin

if isAscii(OpenDialog1.FileName) then

begin

ShowMessage('ASCII File');

end;

end;

end;
 
多人接受答案了。
 
后退
顶部