I just added this Prepare method to my database API.
class function XML.IsInvalid(var Value:Byte):boolean;
begin
Result:=(Value<9) or (Value=11) or (Value=12) or ( (Value>13) and
(Value<32));
end;
class function XML.Prepare(var sInput:string; Refactor:TStream):string;
var
bChar:byte;
iLcv:Int64;
iLen:Int64;
sReplace:string;
begin
Refactor.Size:=0;
for iLcv:=1 to System.Length(sInput) do begin
bChar:=Byte(sInput[iLcv]);
if IsInvalid(bChar) then begin
sReplace:=Concat('&#',IntToStr(bChar),';');
iLen:=System.Length(sReplace);
Refactor.Write(sReplace[1],iLen);
end else
Refactor.Write(bChar,1);
end;
System.SetLength(Result,Refactor.Size);
if Refactor.Size>0 then
Refactor.Read(Result[1],Refactor.Size);
Refactor.Size:=0;
end;
The question is, what is going to happen when the encoding is UTF8 or
UTF16? Will this code allow bytes to go by without messing them all up?
--
Andrew Brunner
Aurawin LLC
512.574.6298
http://aurawin.com/
Aurawin is a great new way to store, share, and enjoy your
photos, videos, music and more.
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel