|
@@ -1218,7 +1218,7 @@ end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
- function TStream.ReadAnsiString: String;
|
|
|
+ function TStream.ReadAnsiString: AnsiString;
|
|
|
|
|
|
Var
|
|
|
TheSize : Longint;
|
|
@@ -1236,7 +1236,24 @@ end;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
- procedure TStream.WriteAnsiString(const S: String);
|
|
|
+ function TStream.ReadUnicodeString: WideString;
|
|
|
+ Var
|
|
|
+ TheSize : Longint;
|
|
|
+ P : PByte ;
|
|
|
+ begin
|
|
|
+ Result:='';
|
|
|
+ ReadBuffer (TheSize,SizeOf(TheSize));
|
|
|
+ SetLength(Result,TheSize);
|
|
|
+ // Illegal typecast if no AnsiStrings defined.
|
|
|
+ if TheSize>0 then
|
|
|
+ begin
|
|
|
+ ReadBuffer (Pointer(Result)^,TheSize*SizeOf(unicodeChar));
|
|
|
+ P:=Pointer(Result)+TheSize*SizeOf(UnicodeChar);
|
|
|
+ PWord(p)^:=0;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+
|
|
|
+ procedure TStream.WriteAnsiString(const S: AnsiString);
|
|
|
|
|
|
Var L : Longint;
|
|
|
|
|
@@ -1246,6 +1263,15 @@ end;
|
|
|
WriteBuffer (Pointer(S)^,L);
|
|
|
end;
|
|
|
|
|
|
+ procedure TStream.WriteUnicodeString(const S: UnicodeString);
|
|
|
+ Var L : Longint;
|
|
|
+
|
|
|
+ begin
|
|
|
+ L:=Length(S);
|
|
|
+ WriteBuffer (L,SizeOf(L));
|
|
|
+ WriteBuffer (Pointer(S)^,L*SizeOf(UnicodeChar));
|
|
|
+ end;
|
|
|
+
|
|
|
procedure TStream.WriteByte(b : Byte);
|
|
|
|
|
|
begin
|
|
@@ -1601,7 +1627,16 @@ end;
|
|
|
{* TStringStream *}
|
|
|
{****************************************************************************}
|
|
|
|
|
|
-function TStringStream.GetDataString: string;
|
|
|
+function TStringStream.GetDataString: RTLString;
|
|
|
+begin
|
|
|
+{$IF SIZEOF(CHAR)=1}
|
|
|
+ Result:=GetAnsiDataString;
|
|
|
+{$ELSE}
|
|
|
+ Result:=GetUnicodeDataString;
|
|
|
+{$ENDIF}
|
|
|
+end;
|
|
|
+
|
|
|
+function TStringStream.GetAnsiDataString: AnsiString;
|
|
|
begin
|
|
|
Result:=FEncoding.GetAnsiString(Bytes,0,Size);
|
|
|
end;
|
|
@@ -1644,21 +1679,30 @@ begin
|
|
|
inherited Create(BytesOf(AString));
|
|
|
end;
|
|
|
|
|
|
+<<<<<<< HEAD
|
|
|
constructor TStringStream.Create(const AString: string; AEncoding: TEncoding; AOwnsEncoding: Boolean);
|
|
|
+=======
|
|
|
+constructor TStringStream.Create(const AString: Ansistring;
|
|
|
+ AEncoding: TEncoding; AOwnsEncoding: Boolean);
|
|
|
+>>>>>>> be8e86f382 (* Better Ansi/WideString support for TStream. Fix StringStream with unicode to be delphi compatible)
|
|
|
begin
|
|
|
FOwnsEncoding:=AOwnsEncoding and not TEncoding.IsStandardEncoding(AEncoding);
|
|
|
FEncoding:=AEncoding;
|
|
|
Inherited Create(AEncoding.GetAnsiBytes(AString));
|
|
|
end;
|
|
|
|
|
|
+<<<<<<< HEAD
|
|
|
constructor TStringStream.Create(const AString: string; ACodePage: Integer);
|
|
|
+=======
|
|
|
+constructor TStringStream.Create(const AString: Ansistring; ACodePage: Integer);
|
|
|
+>>>>>>> be8e86f382 (* Better Ansi/WideString support for TStream. Fix StringStream with unicode to be delphi compatible)
|
|
|
begin
|
|
|
Create(AString,TEncoding.GetEncoding(ACodePage),true);
|
|
|
end;
|
|
|
|
|
|
constructor TStringStream.Create(const AString: UnicodeString);
|
|
|
begin
|
|
|
- Create(AString,TEncoding.Unicode,false);
|
|
|
+ Create(AString,TEncoding.Default,false);
|
|
|
end;
|
|
|
|
|
|
constructor TStringStream.Create(const AString: UnicodeString; AEncoding: TEncoding; AOwnsEncoding: Boolean);
|