16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"ASCIIコード表の配列"
この発言に対し以下のコメントが寄せられています
#00730 寅次 さん 文字列中の Ctrl Code を SPC へ
#00731 寅次 さん バイナリー or テキストファイル判定
集合型を使った ASCII コード配列です。
initialization で _CharArray 配列に setCharType 集合型を
入れておき、プログラム内では CharType 関数で取り出します。
ctNotSFN in CharType( '=' )
といった使い方をします。
配列の並び方はたぶんコレであってると思いますが
もしも「ここがおかしいぞ」とお気づきの方は 教えてください。
unit CharArr;
interface
type
sCharType = (
ctCtrl, //コントロールコード
ctSpc, //SPC,改行,TAB
ctNum, //数字(0-9)
ctHex, //16進(0-9,A-F,a-f)
ctAlpha, //アルファベット
ctPun, //記号
ctKanji1, //SJIS1文字目
ctKanji2, //SJIS2文字目
ctKana, //カタカナ
ctNotSFN, //SFN不可文字
ctNotLFN //LFN不可文字
);
setCharType = set of sCharType;
function CharType(c: char): setCharType;
(* c の文字コードを setCharType で返す *)
implementation
var
_CharArray : array [0..$ff] of setCharType;
function CharType(c: char): setCharType;
begin
result := _CharArray[ Ord( c ) ];
end;
var
i : integer;
initialization
for i:=0 to 8 do _CharArray[i] :=[ ctCtrl, ctNotSFN, ctNotLFN ];
for i:=9 to $0d do
_CharArray[i]:=[ ctCtrl, ctSpc, ctNotSFN, ctNotLFN ];
for i:=$0e to $1f do _CharArray[i] :=[ ctCtrl, ctNotSFN, ctNotLFN ];
{i:=$20} _CharArray[$20]:=[ ctSpc, ctNotSFN ];
{i:=$21} _CharArray[$21]:=[ ctPun ];
{i:=$22} _CharArray[$22]:=[ ctPun, ctNotSFN, ctNotLFN ];
for i:=$23 to $29 do _CharArray[i] :=[ ctPun ];
{i:=$2a} _CharArray[$2a]:=[ ctPun, ctNotSFN, ctNotLFN ];
for i:=$2b to $2c do _CharArray[i] :=[ ctPun, ctNotSFN ];
{i:=$2d} _CharArray[$2d]:=[ ctPun ];
for i:=$2e to $2f do _CharArray[i] :=[ ctPun, ctNotSFN, ctNotLFN ];
for i:=$30 to $39 do _CharArray[i] :=[ ctNum, ctHex ];
{i:=$3a} _CharArray[$3a]:=[ ctPun, ctNotSFN, ctNotLFN ];
{i:=$3b} _CharArray[$3b]:=[ ctPun, ctNotSFN ];
{i:=$3c} _CharArray[$3c]:=[ ctPun, ctNotSFN, ctNotLFN ];
{i:=$3d} _CharArray[$3d]:=[ ctPun, ctNotSFN ];
for i:=$3e to $3f do _CharArray[i] :=[ ctPun, ctNotSFN, ctNotLFN ];
{i:=$40} _CharArray[$40]:=[ ctPun, ctKanji2 ];
for i:=$41 to $46 do _CharArray[i] :=[ ctAlpha, ctKanji2, ctHex ];
for i:=$47 to $5a do _CharArray[i] :=[ ctAlpha, ctKanji2 ];
{i:=$5b} _CharArray[$5b]:=[ ctPun, ctKanji2, ctNotSFN ];
{i:=$5c} _CharArray[$5c]:=[ ctPun, ctKanji2 ];
{i:=$5d} _CharArray[$5d]:=[ ctPun, ctKanji2, ctNotSFN ];
for i:=$5e to $60 do _CharArray[i] :=[ ctPun, ctKanji2 ];
for i:=$61 to $66 do _CharArray[i] :=[ ctPun, ctKanji2, ctHex ];
for i:=$67 to $7a do _CharArray[i] :=[ ctAlpha, ctKanji2 ];
{i:=$7b} _CharArray[$7b]:=[ ctPun ];
{i:=$7c} _CharArray[$7c]:=[ ctPun, ctNotSFN, ctNotLFN ];
for i:=$7d to $7e do _CharArray[i] :=[ ctPun ];
{i:=$7f} _CharArray[$7f]:=[ ctCtrl ];
{i:=$80} _CharArray[$80]:=[ ctKanji2 ];
for i:=$81 to $9f do _CharArray[i] :=[ ctKanji1, ctKanji2 ];
{i:=$a0} _CharArray[$a0]:=[ ctKanji2 ];
for i:=$a1 to $df do _CharArray[i] :=[ ctKana, ctKanji2 ];
for i:=$e0 to $fc do _CharArray[i] :=[ ctKanji1, ctKanji2 ];
for i:=$fd to $ff do _CharArray[i] :=[ ctCtrl ];
end.
(PXC07042) - とらじ -
Original document by 寅次 氏 ID:(PXC07042)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|