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;