rtl: add WideBytesOf(UnicodeString): TBytes for delphi compatibility

git-svn-id: trunk@19391 -
This commit is contained in:
paul 2011-10-06 06:58:07 +00:00
parent fa43a448b9
commit 14c2f248df
3 changed files with 25 additions and 0 deletions

View File

@ -179,3 +179,12 @@ begin
Result:=TEncoding.Default.GetBytes(Val);
end;
{$ENDIF VER2_4}
function WideBytesOf(const Value: UnicodeString): TBytes;
var
Len:Integer;
begin
Len:=Length(Value)*SizeOf(UnicodeChar);
SetLength(Result,Len);
if Len>0 then
Move(Value[1],Result[0],Len);
end;

View File

@ -45,3 +45,4 @@ function StrPCopy(Dest: PWideChar; const Source: UnicodeString): PWideChar; over
function BytesOf(const Val: UnicodeString): TBytes; overload;
function BytesOf(const Val: WideChar): TBytes; overload;
{$ENDIF VER2_4}
function WideBytesOf(const Value: UnicodeString): TBytes;

View File

@ -17,6 +17,18 @@ begin
Result := Result and (B[I] = Etalon[I]);
end;
function CheckWideBytes(const B: TBytes): Boolean;
const
Etalon: array[0..7] of Byte = (84, 00, 101, 00, 115, 00, 116, 00);
var
I: Integer;
begin
Result := Length(B) <= Length(Etalon);
if Result then
for I := Low(B) to High(B) do
Result := Result and (B[I] = Etalon[I]);
end;
var
S: AnsiString;
U: UnicodeString;
@ -36,4 +48,7 @@ begin
B := BytesOf(U[1]);
if not CheckBytes(B) then
halt(4);
B := WideBytesOf(U);
if not CheckWideBytes(B) then
halt(5);
end.