diff --git a/wst/trunk/base_binary_formatter.pas b/wst/trunk/base_binary_formatter.pas index dd933518c..4d4c1f04a 100644 --- a/wst/trunk/base_binary_formatter.pas +++ b/wst/trunk/base_binary_formatter.pas @@ -46,9 +46,9 @@ type dtAnsiChar = 10, dtWideChar = 11, dtEnum = 12, dtSingle = 13, dtDouble = 14, dtExtended = 15, dtCurrency = 16, dtAnsiString = 17, dtWideString = 18, -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} dtUnicodeString = 19, -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} dtObject = 30, dtArray = 31 ); const @@ -69,9 +69,9 @@ type PAnsiStringBuffer = ^TAnsiStringBuffer; PWideStringBuffer = ^TWideStringBuffer; -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} PUnicodeStringBuffer = ^TUnicodeStringBuffer; -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} PObjectBuffer = ^TObjectBuffer; PArrayBuffer = ^TArrayBuffer; PDataBuffer = ^TDataBuffer; @@ -98,9 +98,9 @@ type dtAnsiString : ( AnsiStrData : PAnsiStringBuffer ); dtWideString : ( WideStrData : PWideStringBuffer ); -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} dtUnicodeString : ( UnicodeStrData : PUnicodeStringBuffer ); -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} dtObject : ( ObjectData : PObjectBuffer ); dtArray : ( ArrayData : PArrayBuffer ); End; @@ -113,11 +113,11 @@ type Data : TWideStringData; end; -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} TUnicodeStringBuffer = record Data : TUnicodeStringData; end; -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} @@ -254,13 +254,13 @@ type Const ATypeInfo : PTypeInfo; Const AData : WideString );{$IFDEF USE_INLINE}inline;{$ENDIF} -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} procedure PutUnicodeStr( Const AName : String; Const ATypeInfo : PTypeInfo; Const AData : UnicodeString );{$IFDEF USE_INLINE}inline;{$ENDIF} -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} procedure PutEnum( Const AName : String; Const ATypeInfo : PTypeInfo; @@ -360,13 +360,13 @@ type var AName : String; var AData : WideString ) : Boolean;{$IFDEF USE_INLINE}inline;{$ENDIF} -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} function GetUnicodeStr( const ATypeInfo : PTypeInfo; var AName : String; var AData : UnicodeString ) : Boolean;{$IFDEF USE_INLINE}inline;{$ENDIF} -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} function GetObj( Const ATypeInfo : PTypeInfo; Var AName : String; @@ -507,9 +507,9 @@ Begin dtAnsiString : APrinterProc( s + ARoot^.Name + ' = ' + ARoot^.AnsiStrData^.Data ); dtWideString : APrinterProc( s + ARoot^.Name + ' = ' + ARoot^.WideStrData^.Data ); -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} dtUnicodeString : APrinterProc( s + ARoot^.Name + ' = ' + ARoot^.UnicodeStrData^.Data ); -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} dtObject : Begin APrinterProc( s + ARoot^.Name + ' = '); @@ -615,7 +615,7 @@ begin FillChar(Result^.WideStrData^,i,#0); Result^.WideStrData^.Data := ''; end; -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} dtUnicodeString : begin i := SizeOf(TUnicodeStringBuffer); @@ -623,7 +623,7 @@ begin FillChar(Result^.UnicodeStrData^,i,#0); Result^.UnicodeStrData^.Data := ''; end; -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} dtObject : Begin Result^.ObjectData := wst_GetMem(SizeOf(TObjectBuffer)); @@ -698,9 +698,9 @@ Begin dtAnsiString : ADest.WriteAnsiStr(ARoot^.AnsiStrData^.Data); dtWideString : ADest.WriteWideStr(ARoot^.WideStrData^.Data); -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} dtUnicodeString : ADest.WriteUnicodeStr(ARoot^.UnicodeStrData^.Data); -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} dtBool : ADest.WriteBool(ARoot^.BoolData); dtAnsiChar : ADest.WriteAnsiChar(ARoot^.AnsiCharData); dtWideChar : ADest.WriteWideChar(ARoot^.WideCharData); @@ -767,9 +767,9 @@ Begin dtAnsiString : Result^.AnsiStrData^.Data := AStoreRdr.ReadAnsiStr(); dtWideString : Result^.WideStrData^.Data := AStoreRdr.ReadWideStr(); -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} dtUnicodeString : Result^.UnicodeStrData^.Data := AStoreRdr.ReadUnicodeStr(); -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} dtBool : Result^.BoolData := AStoreRdr.ReadBool(); dtAnsiChar : Result^.AnsiCharData := AStoreRdr.ReadAnsiChar(); dtWideChar : Result^.WideCharData := AStoreRdr.ReadWideChar(); @@ -856,14 +856,14 @@ Begin Freemem(AOwner^.WideStrData); AOwner^.WideStrData := Nil; end; -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} dtUnicodeString : begin AOwner^.UnicodeStrData^.Data := ''; Freemem(AOwner^.UnicodeStrData); AOwner^.UnicodeStrData := Nil; end; -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} dtObject : Begin FreeObjectBuffer(AOwner^.ObjectData); @@ -1093,7 +1093,7 @@ begin StackTop().CreateBuffer(AName,dtWideString)^.WideStrData^.Data := AData; end; -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} procedure TBaseBinaryFormatter.PutUnicodeStr( const AName: String; const ATypeInfo: PTypeInfo; @@ -1102,7 +1102,7 @@ procedure TBaseBinaryFormatter.PutUnicodeStr( begin StackTop().CreateBuffer(AName,dtUnicodeString)^.UnicodeStrData^.Data := AData; end; -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} procedure TBaseBinaryFormatter.PutEnum( const AName: String; @@ -1320,8 +1320,14 @@ var locBuffer : PDataBuffer; begin Result := GetDataBuffer(AName,locBuffer); - if Result then - AData := locBuffer^.AnsiStrData^.Data; + if Result then begin + case locBuffer^.DataType of + dtUnicodeString : AData := locBuffer^.UnicodeStrData^.Data; + dtWideString : AData := locBuffer^.WideStrData^.Data; + else + AData := locBuffer^.AnsiStrData^.Data; + end; + end; end; function TBaseBinaryFormatter.GetWideStr( @@ -1333,11 +1339,17 @@ var locBuffer : PDataBuffer; begin Result := GetDataBuffer(AName,locBuffer); - if Result then - AData := locBuffer^.WideStrData^.Data; + if Result then begin + case locBuffer^.DataType of + dtAnsiString : AData := locBuffer^.AnsiStrData^.Data; + dtUnicodeString : AData := locBuffer^.UnicodeStrData^.Data; + else + AData := locBuffer^.WideStrData^.Data; + end; + end; end; -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} function TBaseBinaryFormatter.GetUnicodeStr( const ATypeInfo: PTypeInfo; var AName: String; @@ -1347,10 +1359,16 @@ var locBuffer : PDataBuffer; begin Result := GetDataBuffer(AName,locBuffer); - if Result then - AData := locBuffer^.UnicodeStrData^.Data; + if Result then begin + case locBuffer^.DataType of + dtAnsiString : AData := locBuffer^.AnsiStrData^.Data; + dtWideString : AData := locBuffer^.WideStrData^.Data; + else + AData := locBuffer^.UnicodeStrData^.Data; + end; + end; end; -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} function TBaseBinaryFormatter.GetObj( const ATypeInfo: PTypeInfo; @@ -1530,7 +1548,7 @@ begin end; tkLString{$IFDEF FPC},tkAString{$ENDIF} : Begin - ansiStrData := String(AData); + ansiStrData := AnsiString(AData); PutAnsiStr(AName,ATypeInfo,ansiStrData); End; tkWString : @@ -1659,7 +1677,7 @@ begin end; tkLString{$IFDEF FPC},tkAString{$ENDIF} : begin - strData := string(AData); + strData := AnsiString(AData); StackTop().CreateInnerBuffer(dtAnsiString)^.AnsiStrData^.Data := strData; end; tkWString : @@ -1838,7 +1856,7 @@ begin strData := ''; Result := GetAnsiStr(ATypeInfo,AName,strData); if Result then - String(AData) := strData; + AnsiString(AData) := strData; End; tkWString : begin @@ -1973,10 +1991,34 @@ begin tkLString {$IFDEF FPC}, tkAString - {$ENDIF} : string(AData) := dataBuffer^.AnsiStrData^.Data; - tkWString : WideString(AData) := dataBuffer^.WideStrData^.Data; + {$ENDIF} : + begin + case dataBuffer^.DataType of + dtUnicodeString : AnsiString(AData) := dataBuffer^.UnicodeStrData^.Data; + dtWideString : AnsiString(AData) := dataBuffer^.WideStrData^.Data; + else + AnsiString(AData) := dataBuffer^.AnsiStrData^.Data; + end; + end; + tkWString : + begin + case dataBuffer^.DataType of + dtUnicodeString : WideString(AData) := dataBuffer^.UnicodeStrData^.Data; + dtAnsiString : WideString(AData) := dataBuffer^.AnsiStrData^.Data; + else + WideString(AData) := dataBuffer^.WideStrData^.Data; + end; + end; {$IFDEF WST_UNICODESTRING} - tkUString : UnicodeString(AData) := dataBuffer^.UnicodeStrData^.Data; + tkUString : + begin + case dataBuffer^.DataType of + dtAnsiString : UnicodeString(AData) := dataBuffer^.AnsiStrData^.Data; + dtWideString : UnicodeString(AData) := dataBuffer^.WideStrData^.Data; + else + UnicodeString(AData) := dataBuffer^.UnicodeStrData^.Data; + end; + end; {$ENDIF WST_UNICODESTRING} tkClass, tkRecord : raise EBinaryFormatterException.Create(SERR_InnerScopeMustBeSimpleType); diff --git a/wst/trunk/base_service_intf.pas b/wst/trunk/base_service_intf.pas index c0e27cfa8..90fc44cf5 100644 --- a/wst/trunk/base_service_intf.pas +++ b/wst/trunk/base_service_intf.pas @@ -5206,7 +5206,13 @@ begin ok := ( GetInt64Prop(Self,p^.Name) = GetInt64Prop(ACompareTo,p^.Name) ); {$IFDEF HAS_TKBOOL}tkBool,{$ENDIF} tkEnumeration, tkInteger : ok := ( GetOrdProp(Self,p^.Name) = GetOrdProp(ACompareTo,p^.Name) ); - tkLString{$IFDEF FPC}, tkAString{$ENDIF} : + {$IFDEF FPC} + tkAString, + {$ENDIF FPC} + {$IFDEF WST_UNICODESTRING} + tkUString, + {$ENDIF WST_UNICODESTRING} + tkLString : ok := ( GetStrProp(Self,p^.Name) = GetStrProp(ACompareTo,p^.Name) ); tkClass : begin diff --git a/wst/trunk/base_soap_formatter.pas b/wst/trunk/base_soap_formatter.pas index ab4849825..5b0fb6779 100644 --- a/wst/trunk/base_soap_formatter.pas +++ b/wst/trunk/base_soap_formatter.pas @@ -1820,7 +1820,7 @@ begin {$ENDIF HAS_QWORD} tkLString{$IFDEF FPC},tkAString{$ENDIF} : Begin - strData := String(AData); + strData := AnsiString(AData); PutStr(ANameSpace,AName,ATypeInfo,strData); End; {$IFDEF WST_UNICODESTRING} @@ -1949,7 +1949,7 @@ begin {$ENDIF HAS_QWORD} tkLString{$IFDEF FPC},tkAString{$ENDIF} : begin - strData := string(AData); + strData := AnsiString(AData); dataBuffer := strData; end; tkWString : @@ -2087,7 +2087,7 @@ begin strData := ''; Result := GetStr(ATypeInfo,ANameSpace,AName,strData); if Result then - String(AData) := strData; + AnsiString(AData) := strData; End; {$IFDEF WST_UNICODESTRING} tkUString : @@ -2222,7 +2222,7 @@ begin {$IFDEF HAS_QWORD} tkQWord : QWord(AData) := StrToQWordDef(Trim(dataBuffer),0); {$ENDIF HAS_QWORD} - tkLString{$IFDEF FPC},tkAString{$ENDIF} : string(AData) := dataBuffer; + tkLString{$IFDEF FPC},tkAString{$ENDIF} : AnsiString(AData) := dataBuffer; tkWString : WideString(AData) := dataBuffer; {$IFDEF WST_UNICODESTRING} tkUString : UnicodeString(AData) := dataBuffer; diff --git a/wst/trunk/base_xmlrpc_formatter.pas b/wst/trunk/base_xmlrpc_formatter.pas index 3adb8f4f0..2d29402ca 100644 --- a/wst/trunk/base_xmlrpc_formatter.pas +++ b/wst/trunk/base_xmlrpc_formatter.pas @@ -1433,7 +1433,7 @@ begin {$ENDIF HAS_QWORD} tkLString{$IFDEF FPC},tkAString{$ENDIF} : Begin - strData := String(AData); + strData := AnsiString(AData); PutStr(AName,ATypeInfo,strData); End; tkWString : @@ -1562,7 +1562,7 @@ begin {$ENDIF HAS_QWORD} tkLString{$IFDEF FPC},tkAString{$ENDIF} : begin - strData := string(AData); + strData := AnsiString(AData); dataBuffer := strData; end; tkWString : @@ -1706,7 +1706,7 @@ begin strData := ''; Result := GetStr(ATypeInfo,AName,strData); if Result then - String(AData) := strData; + AnsiString(AData) := strData; End; {$IFDEF WST_UNICODESTRING} tkUString : @@ -1842,7 +1842,7 @@ begin {$IFDEF HAS_QWORD} tkQWord : QWord(AData) := StrToQWordDef(Trim(dataBuffer),0); {$ENDIF HAS_QWORD} - tkLString{$IFDEF FPC},tkAString{$ENDIF} : string(AData) := dataBuffer; + tkLString{$IFDEF FPC},tkAString{$ENDIF} : AnsiString(AData) := dataBuffer; tkWString : WideString(AData) := dataBuffer; {$IFDEF WST_UNICODESTRING} tkUString : UnicodeString(AData) := dataBuffer; diff --git a/wst/trunk/binary_streamer.pas b/wst/trunk/binary_streamer.pas index 0c4fcc594..27a631a72 100644 --- a/wst/trunk/binary_streamer.pas +++ b/wst/trunk/binary_streamer.pas @@ -34,6 +34,10 @@ Type TWideStringData = WideString; {$IFDEF WST_UNICODESTRING} TUnicodeStringData = UnicodeString; +{$ELSE WST_UNICODESTRING} + UnicodeString = WideString; + TUnicodeStringData = UnicodeString; + UnicodeChar = WideChar; {$ENDIF WST_UNICODESTRING} TAnsiCharacter = AnsiChar; TWideCharacter = WideChar; @@ -64,9 +68,9 @@ Type procedure WriteEnum(Const AData : TEnumData); procedure WriteAnsiStr(Const AData : TAnsiStringData); procedure WriteWideStr(Const AData : TWideStringData); -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} procedure WriteUnicodeStr(Const AData : TUnicodeStringData); -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} procedure WriteBinary(const AData : TByteDynArray); procedure WriteSingle(Const AData : TFloat_Single_4); @@ -96,9 +100,9 @@ Type function ReadEnum():TEnumData; function ReadAnsiStr():TAnsiStringData; function ReadWideStr():TWideStringData; -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} function ReadUnicodeStr():TUnicodeStringData; -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} function ReadBinary() : TByteDynArray; function ReadSingle():TFloat_Single_4; @@ -231,9 +235,9 @@ Type procedure WriteEnum(Const AData : TEnumData); procedure WriteAnsiStr(Const AData : TAnsiStringData); procedure WriteWideStr(Const AData : TWideStringData); -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} procedure WriteUnicodeStr(Const AData : TUnicodeStringData); -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} procedure WriteBinary(const AData : TByteDynArray); procedure WriteSingle(Const AData : TFloat_Single_4); @@ -269,9 +273,9 @@ Type function ReadEnum():TEnumData; function ReadAnsiStr():TAnsiStringData; function ReadWideStr():TWideStringData; -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} function ReadUnicodeStr():TUnicodeStringData; -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} function ReadBinary() : TByteDynArray; function ReadSingle():TFloat_Single_4; @@ -452,7 +456,7 @@ begin FStream.Write(AData[0],i); end; -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} procedure TDataStore.WriteUnicodeStr(const AData: TUnicodeStringData); procedure LocalWrite(); @@ -474,7 +478,7 @@ begin LocalWrite(); end; end; -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} { procedure TDataStore.WriteSingle(const AData: TFloat_Single_4); @@ -642,7 +646,7 @@ begin FStream.ReadBuffer(Result[0],i); end; -{$IFDEF WST_UNICODESTRING} +{ $IFDEF WST_UNICODESTRING} function TDataStoreReader.ReadUnicodeStr(): TUnicodeStringData; var i : TInt32S; @@ -654,7 +658,7 @@ begin Reverse_Array(Pointer(Result)^,i,SizeOf(UnicodeChar)); end; end; -{$ENDIF WST_UNICODESTRING} +{ $ENDIF WST_UNICODESTRING} {$HINTS OFF} function TDataStoreReader.ReadSingle(): TFloat_Single_4;