mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-31 23:00:55 +01:00
65 lines
1.2 KiB
ObjectPascal
65 lines
1.2 KiB
ObjectPascal
program tbytesof;
|
|
|
|
{$mode objfpc}{$H+}
|
|
{$apptype console}
|
|
|
|
uses
|
|
SysUtils, Classes;
|
|
|
|
function CheckBytes(const B: TBytes): Boolean;
|
|
const
|
|
Etalon: array[0..3] of Byte = (84, 101, 115, 116);
|
|
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;
|
|
|
|
function CheckWideBytes(const B: TBytes): Boolean;
|
|
const
|
|
Etalon: array[0..7] of Byte = (
|
|
{$ifdef FPC_BIG_ENDIAN}
|
|
00, 84, 00, 101, 00, 115, 00, 116
|
|
{$else}
|
|
84, 00, 101, 00, 115, 00, 116, 00
|
|
{$endif}
|
|
);
|
|
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;
|
|
B: TBytes;
|
|
begin
|
|
S := 'Test';
|
|
U := S;
|
|
B := BytesOf(S);
|
|
if not CheckBytes(B) then
|
|
halt(1);
|
|
if StringOf(B) <> U then
|
|
halt(2);
|
|
B := BytesOf(S[1]);
|
|
if not CheckBytes(B) then
|
|
halt(3);
|
|
B := BytesOf(U);
|
|
if not CheckBytes(B) then
|
|
halt(4);
|
|
B := BytesOf(U[1]);
|
|
if not CheckBytes(B) then
|
|
halt(5);
|
|
B := WideBytesOf(U);
|
|
if not CheckWideBytes(B) then
|
|
halt(6);
|
|
if WideStringOf(B) <> U then
|
|
halt(7);
|
|
end. |