program ideone;
uses sysutils, classes;
procedure WriteString(stream : TStream; s : AnsiString);
var
len: Cardinal;
begin
len := Length(s);
stream.Write(len, sizeof(cardinal));
if len > 0 then
stream.Write(s[1], len);
end;
function ReadString(stream : TStream) : AnsiString;
var
len: Cardinal;
begin
stream.Read(len, sizeof(cardinal));
SetLength(ReadString, len);
if len > 0 then
stream.Read(ReadString[1], len);
end;
procedure HexDump(p: Pointer; size: Cardinal);
type
ByteArray = array of Byte;
var
i: Integer;
b: ByteArray;
begin
b := p;
for i := 0 to size-1 do
begin
if (i <> 0) and ((i mod 16) = 0) then
WriteLn;
Write(IntToHex(b[i], 2), ' ');
end;
WriteLn;
end;
var
stream: TMemoryStream;
i:Integer;
begin
stream := TMemoryStream.Create;
WriteString(stream, 'Hui');
WriteString(stream, 'Pizda');
WriteString(stream, '');
WriteString(stream, 'Djigurda');
HexDump(stream.Memory, stream.Size);
stream.Seek(0, soBeginning);
writeln('''', ReadString(stream) , '''');
writeln('''', ReadString(stream) , '''');
writeln('''', ReadString(stream) , '''');
writeln('''', ReadString(stream) , '''');
end.
cHJvZ3JhbSBpZGVvbmU7CnVzZXMgc3lzdXRpbHMsIGNsYXNzZXM7Cgpwcm9jZWR1cmUgV3JpdGVTdHJpbmcoc3RyZWFtIDogVFN0cmVhbTsgcyA6IEFuc2lTdHJpbmcpOwp2YXIKICAgIGxlbjogQ2FyZGluYWw7CmJlZ2luCiAgICBsZW4gOj0gTGVuZ3RoKHMpOwogICAgc3RyZWFtLldyaXRlKGxlbiwgc2l6ZW9mKGNhcmRpbmFsKSk7CiAgICBpZiBsZW4gPiAwIHRoZW4KICAgICAgICBzdHJlYW0uV3JpdGUoc1sxXSwgbGVuKTsKZW5kOwoKZnVuY3Rpb24gUmVhZFN0cmluZyhzdHJlYW0gOiBUU3RyZWFtKSA6IEFuc2lTdHJpbmc7CnZhcgogICAgbGVuOiBDYXJkaW5hbDsKYmVnaW4KICAgIHN0cmVhbS5SZWFkKGxlbiwgc2l6ZW9mKGNhcmRpbmFsKSk7CiAgICBTZXRMZW5ndGgoUmVhZFN0cmluZywgbGVuKTsKICAgIGlmIGxlbiA+IDAgdGhlbgogICAgICAgIHN0cmVhbS5SZWFkKFJlYWRTdHJpbmdbMV0sIGxlbik7CmVuZDsKCnByb2NlZHVyZSBIZXhEdW1wKHA6IFBvaW50ZXI7IHNpemU6IENhcmRpbmFsKTsKdHlwZQogICAgQnl0ZUFycmF5ID0gYXJyYXkgb2YgQnl0ZTsKdmFyCiAgICBpOiBJbnRlZ2VyOwogICAgYjogQnl0ZUFycmF5OwpiZWdpbgogICAgYiA6PSBwOwogICAgZm9yIGkgOj0gMCB0byBzaXplLTEgZG8KICAgIGJlZ2luCiAgICAgICAgaWYgKGkgPD4gMCkgYW5kICgoaSBtb2QgMTYpID0gMCkgdGhlbgogICAgICAgICAgICBXcml0ZUxuOwogICAgICAgIFdyaXRlKEludFRvSGV4KGJbaV0sIDIpLCAnICcpOwogICAgZW5kOwogICAgV3JpdGVMbjsKZW5kOwoKdmFyCiAgICBzdHJlYW06IFRNZW1vcnlTdHJlYW07CiAgICBpOkludGVnZXI7CmJlZ2luCiAgICBzdHJlYW0gOj0gVE1lbW9yeVN0cmVhbS5DcmVhdGU7CiAgICBXcml0ZVN0cmluZyhzdHJlYW0sICdIdWknKTsKICAgIFdyaXRlU3RyaW5nKHN0cmVhbSwgJ1BpemRhJyk7CiAgICBXcml0ZVN0cmluZyhzdHJlYW0sICcnKTsKICAgIFdyaXRlU3RyaW5nKHN0cmVhbSwgJ0RqaWd1cmRhJyk7CiAgICAKICAgIEhleER1bXAoc3RyZWFtLk1lbW9yeSwgc3RyZWFtLlNpemUpOwoKICAgIHN0cmVhbS5TZWVrKDAsIHNvQmVnaW5uaW5nKTsKICAgIAogICAgd3JpdGVsbignJycnLCBSZWFkU3RyaW5nKHN0cmVhbSkgLCAnJycnKTsKICAgIHdyaXRlbG4oJycnJywgUmVhZFN0cmluZyhzdHJlYW0pICwgJycnJyk7CiAgICB3cml0ZWxuKCcnJycsIFJlYWRTdHJpbmcoc3RyZWFtKSAsICcnJycpOwogICAgd3JpdGVsbignJycnLCBSZWFkU3RyaW5nKHN0cmVhbSkgLCAnJycnKTsKZW5kLg==