Как определить, имеет ли файл ASCII-формат

Previous  Top  Next

    
 

 

Code:

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 < TotSize) and (a = True) do

    begin

      ReadSize := SETT;

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

      IncSize := IncSize + ReadSize;

      BlockRead(F, c, ReadSize);

      // Iterate

     for i := 0 to ReadSize - 1 do

        if (c[i] < 32) and (not (c[i] 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

    if isAscii(OpenDialog1.FileName) then

      ShowMessage('ASCII File');

end;

 

 

Автор: http://www.swissdelphicenter.ch

©Drkb::02974