You've already forked lazarus-ccr
UnicodeString Fix
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1482 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -1320,9 +1320,15 @@ var
|
|||||||
locBuffer : PDataBuffer;
|
locBuffer : PDataBuffer;
|
||||||
begin
|
begin
|
||||||
Result := GetDataBuffer(AName,locBuffer);
|
Result := GetDataBuffer(AName,locBuffer);
|
||||||
if Result then
|
if Result then begin
|
||||||
|
case locBuffer^.DataType of
|
||||||
|
dtUnicodeString : AData := locBuffer^.UnicodeStrData^.Data;
|
||||||
|
dtWideString : AData := locBuffer^.WideStrData^.Data;
|
||||||
|
else
|
||||||
AData := locBuffer^.AnsiStrData^.Data;
|
AData := locBuffer^.AnsiStrData^.Data;
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TBaseBinaryFormatter.GetWideStr(
|
function TBaseBinaryFormatter.GetWideStr(
|
||||||
const ATypeInfo: PTypeInfo;
|
const ATypeInfo: PTypeInfo;
|
||||||
@ -1333,9 +1339,15 @@ var
|
|||||||
locBuffer : PDataBuffer;
|
locBuffer : PDataBuffer;
|
||||||
begin
|
begin
|
||||||
Result := GetDataBuffer(AName,locBuffer);
|
Result := GetDataBuffer(AName,locBuffer);
|
||||||
if Result then
|
if Result then begin
|
||||||
|
case locBuffer^.DataType of
|
||||||
|
dtAnsiString : AData := locBuffer^.AnsiStrData^.Data;
|
||||||
|
dtUnicodeString : AData := locBuffer^.UnicodeStrData^.Data;
|
||||||
|
else
|
||||||
AData := locBuffer^.WideStrData^.Data;
|
AData := locBuffer^.WideStrData^.Data;
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ $IFDEF WST_UNICODESTRING}
|
{ $IFDEF WST_UNICODESTRING}
|
||||||
function TBaseBinaryFormatter.GetUnicodeStr(
|
function TBaseBinaryFormatter.GetUnicodeStr(
|
||||||
@ -1347,9 +1359,15 @@ var
|
|||||||
locBuffer : PDataBuffer;
|
locBuffer : PDataBuffer;
|
||||||
begin
|
begin
|
||||||
Result := GetDataBuffer(AName,locBuffer);
|
Result := GetDataBuffer(AName,locBuffer);
|
||||||
if Result then
|
if Result then begin
|
||||||
|
case locBuffer^.DataType of
|
||||||
|
dtAnsiString : AData := locBuffer^.AnsiStrData^.Data;
|
||||||
|
dtWideString : AData := locBuffer^.WideStrData^.Data;
|
||||||
|
else
|
||||||
AData := locBuffer^.UnicodeStrData^.Data;
|
AData := locBuffer^.UnicodeStrData^.Data;
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
{ $ENDIF WST_UNICODESTRING}
|
{ $ENDIF WST_UNICODESTRING}
|
||||||
|
|
||||||
function TBaseBinaryFormatter.GetObj(
|
function TBaseBinaryFormatter.GetObj(
|
||||||
@ -1530,7 +1548,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
ansiStrData := String(AData);
|
ansiStrData := AnsiString(AData);
|
||||||
PutAnsiStr(AName,ATypeInfo,ansiStrData);
|
PutAnsiStr(AName,ATypeInfo,ansiStrData);
|
||||||
End;
|
End;
|
||||||
tkWString :
|
tkWString :
|
||||||
@ -1659,7 +1677,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
begin
|
begin
|
||||||
strData := string(AData);
|
strData := AnsiString(AData);
|
||||||
StackTop().CreateInnerBuffer(dtAnsiString)^.AnsiStrData^.Data := strData;
|
StackTop().CreateInnerBuffer(dtAnsiString)^.AnsiStrData^.Data := strData;
|
||||||
end;
|
end;
|
||||||
tkWString :
|
tkWString :
|
||||||
@ -1838,7 +1856,7 @@ begin
|
|||||||
strData := '';
|
strData := '';
|
||||||
Result := GetAnsiStr(ATypeInfo,AName,strData);
|
Result := GetAnsiStr(ATypeInfo,AName,strData);
|
||||||
if Result then
|
if Result then
|
||||||
String(AData) := strData;
|
AnsiString(AData) := strData;
|
||||||
End;
|
End;
|
||||||
tkWString :
|
tkWString :
|
||||||
begin
|
begin
|
||||||
@ -1973,10 +1991,34 @@ begin
|
|||||||
tkLString
|
tkLString
|
||||||
{$IFDEF FPC},
|
{$IFDEF FPC},
|
||||||
tkAString
|
tkAString
|
||||||
{$ENDIF} : string(AData) := dataBuffer^.AnsiStrData^.Data;
|
{$ENDIF} :
|
||||||
tkWString : WideString(AData) := dataBuffer^.WideStrData^.Data;
|
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}
|
{$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}
|
{$ENDIF WST_UNICODESTRING}
|
||||||
|
|
||||||
tkClass, tkRecord : raise EBinaryFormatterException.Create(SERR_InnerScopeMustBeSimpleType);
|
tkClass, tkRecord : raise EBinaryFormatterException.Create(SERR_InnerScopeMustBeSimpleType);
|
||||||
|
@ -5206,7 +5206,13 @@ begin
|
|||||||
ok := ( GetInt64Prop(Self,p^.Name) = GetInt64Prop(ACompareTo,p^.Name) );
|
ok := ( GetInt64Prop(Self,p^.Name) = GetInt64Prop(ACompareTo,p^.Name) );
|
||||||
{$IFDEF HAS_TKBOOL}tkBool,{$ENDIF} tkEnumeration, tkInteger :
|
{$IFDEF HAS_TKBOOL}tkBool,{$ENDIF} tkEnumeration, tkInteger :
|
||||||
ok := ( GetOrdProp(Self,p^.Name) = GetOrdProp(ACompareTo,p^.Name) );
|
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) );
|
ok := ( GetStrProp(Self,p^.Name) = GetStrProp(ACompareTo,p^.Name) );
|
||||||
tkClass :
|
tkClass :
|
||||||
begin
|
begin
|
||||||
|
@ -1820,7 +1820,7 @@ begin
|
|||||||
{$ENDIF HAS_QWORD}
|
{$ENDIF HAS_QWORD}
|
||||||
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
strData := String(AData);
|
strData := AnsiString(AData);
|
||||||
PutStr(ANameSpace,AName,ATypeInfo,strData);
|
PutStr(ANameSpace,AName,ATypeInfo,strData);
|
||||||
End;
|
End;
|
||||||
{$IFDEF WST_UNICODESTRING}
|
{$IFDEF WST_UNICODESTRING}
|
||||||
@ -1949,7 +1949,7 @@ begin
|
|||||||
{$ENDIF HAS_QWORD}
|
{$ENDIF HAS_QWORD}
|
||||||
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
begin
|
begin
|
||||||
strData := string(AData);
|
strData := AnsiString(AData);
|
||||||
dataBuffer := strData;
|
dataBuffer := strData;
|
||||||
end;
|
end;
|
||||||
tkWString :
|
tkWString :
|
||||||
@ -2087,7 +2087,7 @@ begin
|
|||||||
strData := '';
|
strData := '';
|
||||||
Result := GetStr(ATypeInfo,ANameSpace,AName,strData);
|
Result := GetStr(ATypeInfo,ANameSpace,AName,strData);
|
||||||
if Result then
|
if Result then
|
||||||
String(AData) := strData;
|
AnsiString(AData) := strData;
|
||||||
End;
|
End;
|
||||||
{$IFDEF WST_UNICODESTRING}
|
{$IFDEF WST_UNICODESTRING}
|
||||||
tkUString :
|
tkUString :
|
||||||
@ -2222,7 +2222,7 @@ begin
|
|||||||
{$IFDEF HAS_QWORD}
|
{$IFDEF HAS_QWORD}
|
||||||
tkQWord : QWord(AData) := StrToQWordDef(Trim(dataBuffer),0);
|
tkQWord : QWord(AData) := StrToQWordDef(Trim(dataBuffer),0);
|
||||||
{$ENDIF HAS_QWORD}
|
{$ENDIF HAS_QWORD}
|
||||||
tkLString{$IFDEF FPC},tkAString{$ENDIF} : string(AData) := dataBuffer;
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} : AnsiString(AData) := dataBuffer;
|
||||||
tkWString : WideString(AData) := dataBuffer;
|
tkWString : WideString(AData) := dataBuffer;
|
||||||
{$IFDEF WST_UNICODESTRING}
|
{$IFDEF WST_UNICODESTRING}
|
||||||
tkUString : UnicodeString(AData) := dataBuffer;
|
tkUString : UnicodeString(AData) := dataBuffer;
|
||||||
|
@ -1433,7 +1433,7 @@ begin
|
|||||||
{$ENDIF HAS_QWORD}
|
{$ENDIF HAS_QWORD}
|
||||||
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
Begin
|
Begin
|
||||||
strData := String(AData);
|
strData := AnsiString(AData);
|
||||||
PutStr(AName,ATypeInfo,strData);
|
PutStr(AName,ATypeInfo,strData);
|
||||||
End;
|
End;
|
||||||
tkWString :
|
tkWString :
|
||||||
@ -1562,7 +1562,7 @@ begin
|
|||||||
{$ENDIF HAS_QWORD}
|
{$ENDIF HAS_QWORD}
|
||||||
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} :
|
||||||
begin
|
begin
|
||||||
strData := string(AData);
|
strData := AnsiString(AData);
|
||||||
dataBuffer := strData;
|
dataBuffer := strData;
|
||||||
end;
|
end;
|
||||||
tkWString :
|
tkWString :
|
||||||
@ -1706,7 +1706,7 @@ begin
|
|||||||
strData := '';
|
strData := '';
|
||||||
Result := GetStr(ATypeInfo,AName,strData);
|
Result := GetStr(ATypeInfo,AName,strData);
|
||||||
if Result then
|
if Result then
|
||||||
String(AData) := strData;
|
AnsiString(AData) := strData;
|
||||||
End;
|
End;
|
||||||
{$IFDEF WST_UNICODESTRING}
|
{$IFDEF WST_UNICODESTRING}
|
||||||
tkUString :
|
tkUString :
|
||||||
@ -1842,7 +1842,7 @@ begin
|
|||||||
{$IFDEF HAS_QWORD}
|
{$IFDEF HAS_QWORD}
|
||||||
tkQWord : QWord(AData) := StrToQWordDef(Trim(dataBuffer),0);
|
tkQWord : QWord(AData) := StrToQWordDef(Trim(dataBuffer),0);
|
||||||
{$ENDIF HAS_QWORD}
|
{$ENDIF HAS_QWORD}
|
||||||
tkLString{$IFDEF FPC},tkAString{$ENDIF} : string(AData) := dataBuffer;
|
tkLString{$IFDEF FPC},tkAString{$ENDIF} : AnsiString(AData) := dataBuffer;
|
||||||
tkWString : WideString(AData) := dataBuffer;
|
tkWString : WideString(AData) := dataBuffer;
|
||||||
{$IFDEF WST_UNICODESTRING}
|
{$IFDEF WST_UNICODESTRING}
|
||||||
tkUString : UnicodeString(AData) := dataBuffer;
|
tkUString : UnicodeString(AData) := dataBuffer;
|
||||||
|
@ -34,6 +34,10 @@ Type
|
|||||||
TWideStringData = WideString;
|
TWideStringData = WideString;
|
||||||
{$IFDEF WST_UNICODESTRING}
|
{$IFDEF WST_UNICODESTRING}
|
||||||
TUnicodeStringData = UnicodeString;
|
TUnicodeStringData = UnicodeString;
|
||||||
|
{$ELSE WST_UNICODESTRING}
|
||||||
|
UnicodeString = WideString;
|
||||||
|
TUnicodeStringData = UnicodeString;
|
||||||
|
UnicodeChar = WideChar;
|
||||||
{$ENDIF WST_UNICODESTRING}
|
{$ENDIF WST_UNICODESTRING}
|
||||||
TAnsiCharacter = AnsiChar;
|
TAnsiCharacter = AnsiChar;
|
||||||
TWideCharacter = WideChar;
|
TWideCharacter = WideChar;
|
||||||
|
Reference in New Issue
Block a user