Я хочу проверить, является ли файл текстовым файлом. Я попробовал код ниже:
function IsTextFile(const sFile: TFileName): boolean;
//Created By Marcelo Castro - from Brazil
var
oIn: TFileStream;
iRead: Integer;
iMaxRead: Integer;
iData: Byte;
dummy:string;
begin
result:=true;
dummy :='';
oIn := TFileStream.Create(sFile, fmOpenRead or fmShareDenyNone);
try
iMaxRead := 1000; //only text the first 1000 bytes
if iMaxRead > oIn.Size then
iMaxRead := oIn.Size;
for iRead := 1 to iMaxRead do
begin
oIn.Read(iData, 1);
if (idata) > 127 then result:=false;
end;
finally
FreeAndNil(oIn);
end;
end;
Эта функция работает очень хорошо для текстовых файлов, основанных на символах ASCII. Но текстовые файлы также могут содержать неанглийские символы. Эта функция возвращает FALSE для текстовых файлов, отличных от английского.
Есть ли способ проверить, является ли файл текстовым или двоичным файлом?
result:=false
наExit(False)
. Если вы обнаружите, что файл не является текстовым файлом на char 2, на самом деле нет необходимости продолжать исследовать оставшиеся 998 символов... - person Andreas Rejbrand   schedule 12.06.2020