|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"Webブラウザで表示する文字列に変換する"
タイトル:Webブラウザで表示する文字列に変換する
テキストをそのままHTMLに挿入して表示すると、
'<' がタグの一部と認識さる、
改行が入らない、
スペースが詰まってしまう、
ために正しく表示できないことがあります。
それらの文字を置換する(だけ)サンプルコードです。
1文字ずつコピーしたのでは処理が遅くなるので、変換対象の
文字が出てくるまでを一括コピーしています。
function GetHTMLString(Src: string): string;
var
I, CopyStart: Integer;
// 文字列を追加する
procedure AddString(Src: string);
begin
Result := Result + Src;
end;
// 現在点の直前までの未コピー領域をコピーする
procedure AddLastString;//: string;
begin
if I > CopyStart then
AddString(Copy(Src, CopyStart, I - CopyStart));
end;
begin
Result := '';
CopyStart := 1;
I := 1;
while I <= Length(Src) do
begin
case Src[I] of
'"':begin
AddLastString;
AddString('"');
CopyStart := I + 1;
end;
'<':begin
AddLastString;
AddString('<');
CopyStart := I + 1;
end;
'>':begin
AddLastString;
AddString('>');
CopyStart := I + 1;
end;
'&':begin
AddLastString;
AddString('&');
CopyStart := I + 1;
end;
' ':
begin
AddLastString;
AddString(' ');
CopyStart := I + 1;
end;
#13:begin // 改行
AddLastString;
AddString('<BR>' + #13 + #10);
if Src[I + 1] = #10 then Inc(I);
CopyStart := I + 1;
end;
#128..#255:begin
// 2バイト文字をスキップ
Inc(I);
end;
#0:begin
// 終了
// バグが無ければ、この部分は通過しないはず
break;
end;
end;
Inc(I);
end;
AddLastString;
end;
使用例は、
procedure TForm1.Button1Click(Sender: TObject);
var
Strings: TStrings;
S: string;
begin
Strings := TStringList.Create;
Strings.LoadFromFile('ReadMe.txt');
// タグに間違えられる文字列を置換する
S := GetHTMLString(Strings.Text);
// HTMLの体裁を整える
Strings.Clear;
Strings.Add('<HTML><HEAD></HEAD><BODY>');
Strings.Add(S);
Strings.Add('</BODY></HTML>');
Strings.SaveToFile('ReadMe.html');
Strings.Free;
// WebBrowser1.Navigate('ReadMe.html');
end;
2001/02/13、河邦 正(GCC02240@nifty.com)
(http://member.nifty.ne.jp/kht0000/、NIFTY外へ私作Componentの
公開用)
Original document by 河邦 正 氏 ID:(GCC02240)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|