16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"JIS文字列から SJIS文字列への変換"
この発言に対し以下のコメントが寄せられています
#00959 けんし さん RE:JIS文字列から SJIS文字列への変換
こんにちは、ぜえた です。
JIS文字列から SJIS文字列に変換します。
文字列処理のサンプルとしても御覧になれます。
nifty:FDELPHI/MES/06/28180 nifty:FDELPHI/MES/06/28014
nifty:FDELPHI/MES/16/949 nifty:FDELPHI/MES/16/953
も参照してください。
JisCharToSJisChar関数は nifty:FDELPHI/MES/15/286 の瑠瓏さんの
JisToSJis関数を少し変更したものです。
function JisCharToSJisChar(N:WORD):WORD; assembler;
asm
add ax,07ea1h
shr al,1
jb @1
cmp ah,0deh
sbb ah,5eh
@1: xor al,0e0h
end;
function JisToSJis(S: string): string;
type
PWord = ^Word;
var
p, q, d: PChar;
begin
SetString(Result, nil, Length(S));
p := PChar(S);
q := PChar(Result);
d := q;
while True do begin
case p^ of
#0: Break;
#$1B: begin
if (p[1] <> #0) and (p[1] = '$')
and (p[2] <> #0) and (p[2] = 'B') then begin
Inc(p, 3);
while True do begin
case p^ of
#0: Break;
#$1B: begin
if (p[1] <> #0) and (p[1] = '(')
and (p[2] <> #0) and (p[2] = 'B') then begin
Inc(p, 3);
Break;
end else begin
d^ := p^;
Inc(p);
Inc(d);
end;
end;
else
PWord(d)^ := JisCharToSJisChar(PWord(p)^);
Inc(p, 2);
Inc(d, 2);
end;
end;
Continue;
end;
end;
end;
d^ := p^;
Inc(d);
Inc(p);
end;
SetLength(Result, d - q);
end;
ぜえた (QZC05100)
Original document by ぜえた 氏 ID:(QZC05100)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|