16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"バイナリー or テキストファイル判定"
この発言は #00729 寅次 さんのASCIIコード表の配列 に対するコメントです
#00729 の ASCII コード表の使用例その2です。
ファイルがバイナリーファイルかテキストファイルかを判断します。
ファイルの先頭255バイト内に コントロールコードでなおかつ
改行、タブ以外のものが5つ以上あればバイナリーファイルだろうと
判定しています。
function IsBinaryFile(filename: string): Boolean;
const
ReadSize = 255;
var
F : file;
ReadBuf : array [0..ReadSize] of Char;
NumRead : integer;
i, CtrlCount : integer;
begin
Result := False;
AssignFile( F, filename );
Reset( F, 1 );
BlockRead( F, ReadBuf, ReadSize, NumRead );
Close( F );
CtrlCount := 0;
for i := 0 to NumRead do
if ( ctCtrl in CharType( ReadBuf[i] ) )and
not( ctSpc in CharType( ReadBuf[i] ) ) then
Inc( CtrlCount );
if CtrlCount>5 then
Result := True;
end;
(PXC07042) - とらじ -
Original document by 寅次 氏 ID:(PXC07042)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|