16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:Simple XML-like token reader"
この発言は #00897 ぜえた さんのSimple XML-like token reader に対するコメントです
ぜえた さん、こんにちは。
#897の修正です。
・文字列の中を直接いじって文字列破壊が起きる可能性がある個所を修正。
・タグの途中でテキストの終わりが来たときに tkEndOfTextになるようにした。
type
TToken = (tkEndOfText, tkStartTag, tkEndTag, tkContent);
TTokenReader = class
private
FText: string;
FToken: TToken;
FValue: string;
FCur: PChar;
procedure SetText(const Value: string);
public
procedure Next;
property Token: TToken read FToken;
property Text: string read FText write SetText;
property Value: string read FValue;
end;
procedure TTokenReader.SetText(const Value: string);
begin
FText := Value;
FCur := PChar(FText);
end;
procedure TTokenReader.Next;
var
p: PChar;
begin
p := FCur;
case p^ of
#0: begin
FToken := tkEndOfText;
FValue := '';
end;
'<': begin
Inc(p);
if p^ = '/' then begin
FToken := tkEndTag;
Inc(p);
end else begin
FToken := tkStartTag;
end;
while not (p^ in [#0, '>']) do Inc(p);
if p^ = '>' then begin
Inc(p);
SetString(FValue, FCur, p - FCur);
end else begin
FToken := tkEndOfText;
FValue := '';
end;
end;
else
FToken := tkContent;
while not (p^ in [#0, '<']) do Inc(p);
SetString(FValue, FCur, p - FCur);
end;
FCur := p;
end;
ぜえた (QZC05100)
Original document by ぜえた 氏 ID:(QZC05100)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|