diff --git a/utils/wasmbin/parseutils.pas b/utils/wasmbin/parseutils.pas index afa59df718..8e0860dc94 100644 --- a/utils/wasmbin/parseutils.pas +++ b/utils/wasmbin/parseutils.pas @@ -17,6 +17,7 @@ const WhiteSpaceChars = SpaceChars; SpaceEolnChars = EoLnChars+SpaceChars; NumericChars = ['0'..'9']; + HexChars = ['0'..'9','a'..'f','A'..'F']; SignChars = ['+','-']; SignNumericChars = NumericChars + SignChars; AlphabetChars = ['a'..'z','A'..'Z']; @@ -44,6 +45,8 @@ procedure ParseCSSValues(const s: String; css: TStrings); procedure GetCssAbsBoundsRect(Css: TStrings; var r: TRect); function CssValInt(const s: String; Def: integer): Integer; +function ScanNumberC(const buf: string; var idx: Integer; var numberText: string): Boolean; + implementation function CssValInt(const s: String; Def: integer): Integer; @@ -230,5 +233,29 @@ begin Result:=Copy(s, i, index-i); end; +function ScanNumberC(const buf: string; var idx: Integer; var numberText: string): Boolean; +var + ch : char; +begin + Result := false; + if buf[idx] in SignChars then begin + ch:=buf[idx]; + inc(idx); + end else + ch := #0; + + if (idx#0) then begin + if (numberText = '') then Exit; + numberText:=ch+numberText; + end; + Result := true; +end; + end.