diff --git a/packages/fcl-css/src/fpcssresolver.pas b/packages/fcl-css/src/fpcssresolver.pas index da98b36d93..1c46805f04 100644 --- a/packages/fcl-css/src/fpcssresolver.pas +++ b/packages/fcl-css/src/fpcssresolver.pas @@ -390,7 +390,7 @@ type function GetSiblingOfIndex(SiblingIDs: TIntegerDynArray; Index: integer): integer; virtual; function ComputeValue(El: TCSSElement): TCSSString; virtual; function SameValueText(const A, B: TCSSString): boolean; virtual; - function SameValueText(A: PChar; ALen: integer; B: PChar; BLen: integer): boolean; virtual; + function SameValueText(A: PAnsiChar; ALen: integer; B: PAnsiChar; BLen: integer): boolean; virtual; function PosSubString(const SearchStr, Str: TCSSString): integer; virtual; function PosWord(const SearchWord, Words: TCSSString): integer; virtual; function GetSiblingCount(aNode: ICSSNode): integer; virtual; @@ -1538,10 +1538,10 @@ begin Result:=A=B; end; -function TCSSResolver.SameValueText(A: PChar; ALen: integer; B: PChar; +function TCSSResolver.SameValueText(A: PAnsiChar; ALen: integer; B: PAnsiChar; BLen: integer): boolean; var - AC, BC: Char; + AC, BC: AnsiChar; i: Integer; begin if ALen<>BLen then exit(false); @@ -1566,16 +1566,16 @@ function TCSSResolver.PosSubString(const SearchStr, Str: TCSSString): integer; var SearchLen: SizeInt; i: Integer; - SearchP, StrP: PChar; - AC, BC: Char; + SearchP, StrP: PAnsiChar; + AC, BC: AnsiChar; begin Result:=0; if SearchStr='' then exit; if Str='' then exit; if StringComparison=crscCaseInsensitive then begin - SearchP:=PChar(SearchStr); - StrP:=PChar(Str); + SearchP:=PAnsiChar(SearchStr); + StrP:=PAnsiChar(Str); SearchLen:=length(SearchStr); AC:=SearchP^; for i:=0 to length(Str)-SearchLen do diff --git a/packages/fcl-css/src/fpcssscanner.pp b/packages/fcl-css/src/fpcssscanner.pp index 60db4cbbfd..6285a976ea 100644 --- a/packages/fcl-css/src/fpcssscanner.pp +++ b/packages/fcl-css/src/fpcssscanner.pp @@ -138,7 +138,7 @@ Type FCurToken: TCSSToken; FCurTokenString: TCSSString; FCurLine: TCSSString; - TokenStr: PChar; + TokenStr: PAnsiChar; FSourceStream : TStream; FOwnSourceFile : Boolean; function DoHash: TCSSToken; @@ -159,7 +159,7 @@ Type function ReadUnicodeEscape: WideChar; procedure SetReturnComments(AValue: Boolean); procedure SetReturnWhiteSpace(AValue: Boolean); - class function UnknownCharToStr(C: Char): TCSSString; + class function UnknownCharToStr(C: AnsiChar): TCSSString; protected procedure DoError(const Msg: TCSSString; Args: array of const); overload; procedure DoError(const Msg: TCSSString); overload; @@ -203,6 +203,8 @@ type procedure CreateMsgArgs(var MsgArgs: TMessageArgs; const Args: array of const); var i: Integer; + A : AnsiString; + U : UnicodeString; {$ifdef pas2js} v: jsvalue; {$endif} @@ -239,16 +241,36 @@ begin vtPChar: MsgArgs[i] := Args[i].VPChar; vtObject: ; // Args[i].VObject; vtClass: ; // Args[i].VClass; - vtWideChar: MsgArgs[i] := AnsiString(Args[i].VWideChar); - vtPWideChar: MsgArgs[i] := Args[i].VPWideChar; - vtAnsiString: MsgArgs[i] := AnsiString(Args[i].VAnsiString); + vtWideChar: + begin + U:=Args[i].VWideChar; + MsgArgs[i] := U; + end; + vtPWideChar: + begin + U:=Args[i].VPWideChar; + MsgArgs[i] := U; + end; + vtAnsiString: + begin + A:=AnsiString(Args[i].VAnsiString); + MsgArgs[i]:=A; + end; vtCurrency: ; // Args[i].VCurrency^); vtVariant: ; // Args[i].VVariant^); vtInterface: ; // Args[i].VInterface^); - vtWidestring: MsgArgs[i] := AnsiString(WideString(Args[i].VWideString)); + vtWidestring: + begin + U:=WideString(Args[i].VWideString); + MsgArgs[i] := U; + end; vtInt64: MsgArgs[i] := IntToStr(Args[i].VInt64^); vtQWord: MsgArgs[i] := IntToStr(Args[i].VQWord^); - vtUnicodeString:MsgArgs[i] := AnsiString(UnicodeString(Args[i].VUnicodeString)); + vtUnicodeString: + begin + U:=UnicodeString(Args[i].VUnicodeString); + MsgArgs[i] := U; + end; end; {$endif} end; @@ -335,7 +357,7 @@ begin end else begin FCurLine := FSourceFile.ReadLine; - TokenStr := PChar(CurLine); + TokenStr := PAnsiChar(CurLine); Result := true; Inc(FCurRow); end; @@ -359,7 +381,7 @@ end; function TCSSScanner.DoSingleLineComment : TCSSToken; Var - TokenStart : PChar; + TokenStart : PAnsiChar; Len : Integer; begin @@ -377,9 +399,9 @@ end; function TCSSScanner.DoMultiLineComment : TCSSToken; Var - TokenStart : PChar; + TokenStart : PAnsiChar; Len,OLen : Integer; - PrevToken : Char; + PrevToken : AnsiChar; begin Inc(TokenStr); @@ -477,8 +499,8 @@ end; function TCSSScanner.DoStringLiteral: TCSSToken; Var - Delim : Char; - TokenStart : PChar; + Delim : AnsiChar; + TokenStart : PAnsiChar; Len,OLen: Integer; S : TCSSString; @@ -513,7 +535,7 @@ begin Move(TokenStart^, FCurTokenString[OLen + 1], Len); Move(S[1],FCurTokenString[OLen + Len+1],Length(S)); Inc(OLen, Len+Length(S)); - // Next char + // Next AnsiChar // Inc(TokenStr); TokenStart := TokenStr+1; end; @@ -534,7 +556,7 @@ end; function TCSSScanner.DoNumericLiteral :TCSSToken; Var - TokenStart : PChar; + TokenStart : PAnsiChar; Len : Integer; isEscape : Boolean; @@ -575,14 +597,14 @@ begin if IsEscape then begin Result:=ctkString; - FCurTokenString:=Char(StrToInt(FCurTokenString)); + FCurTokenString:=AnsiChar(StrToInt(FCurTokenString)); end; end; function TCSSScanner.DoHash :TCSSToken; Var - TokenStart : PChar; + TokenStart : PAnsiChar; Len : Integer; begin @@ -601,8 +623,8 @@ end; function TCSSScanner.EatBadURL: TCSSToken; var - TokenStart : PChar; - C : Char; + TokenStart : PAnsiChar; + C : AnsiChar; len,oldlen : integer; begin @@ -630,9 +652,9 @@ end; function TCSSScanner.DoUnicodeRange: TCSSTOKEN; Var - TokenStart:PChar; + TokenStart:PAnsiChar; Len : Integer; - Tokens : Set of char; + Tokens : Set of AnsiChar; begin Tokens:= ['A'..'F', 'a'..'f', '0'..'9', '-']; @@ -652,7 +674,7 @@ begin end; -class function TCSSScanner.UnknownCharToStr(C: Char): TCSSString; +class function TCSSScanner.UnknownCharToStr(C: AnsiChar): TCSSString; begin if C=#0 then @@ -666,7 +688,7 @@ end; function TCSSScanner.DoIdentifierLike : TCSSToken; Var - TokenStart:PChar; + TokenStart:PAnsiChar; Len,oLen : Integer; IsEscape,IsAt, IsPseudo, IsFunc : Boolean; @@ -741,7 +763,7 @@ end; function TCSSScanner.DoInvalidChars: TCSSToken; var - TokenStart: PChar; + TokenStart: PAnsiChar; Len: SizeUInt; begin Result:=ctkINVALID; @@ -962,7 +984,7 @@ begin if (TokenStr=Nil) or (Length(CurLine)=0) then Result:=0 else - Result := TokenStr - PChar(CurLine); + Result := TokenStr - PAnsiChar(CurLine); end; function TCSSScanner.GetReturnComments: Boolean; diff --git a/packages/fcl-css/src/fpcsstree.pp b/packages/fcl-css/src/fpcsstree.pp index 1427b8e48b..3bcc043d38 100644 --- a/packages/fcl-css/src/fpcsstree.pp +++ b/packages/fcl-css/src/fpcsstree.pp @@ -427,7 +427,7 @@ implementation Const sIndent = ' '; -Function u8length(s : char) : Byte; +Function u8length(s : AnsiChar) : Byte; const u8_length : Array[0..15] of byte = ( // 0 1 2 3 4 5 6 7 8 9 A B C D E F @@ -445,7 +445,7 @@ Var O : TCSSString; u : TCSSString; W : Unicodestring; - C : Char; + C : AnsiChar; Procedure AddO; var @@ -504,7 +504,7 @@ function StringToIdentifier(const S: TCSSString): TCSSString; Var iIn,iOut,L : Integer; - C : Char; + C : AnsiChar; begin Result:='';