program ideone;
{$mode delphi}{$h+}
uses SysUtils;
// Auxiliary function to extract reference count.
function SRefCount(P : Pointer) : integer;
Type
PAnsiRec = ^TAnsiRec;
TAnsiRec = Record
CodePage : TSystemCodePage;
ElementSize : Word;
{$ifdef CPU64}
{ align fields }
Dummy : DWord;
{$endif CPU64}
Ref : SizeInt;
Len : SizeInt;
end;
begin
if P=Nil then
Result:=0
else
Result:=PAnsiRec(P-SizeOf(TAnsiRec))^.Ref;
end;
type
TARCrecord = record
nm : string;
v : integer;
end;
procedure testFail(const s : string);
var
r1 : TARCrecord;
r2 : TARCrecord;
begin
writeln('sref1 = ', SREfCount(pointer(s)));
r1.nm := s;
writeln('sref2 = ', SREfCount(pointer(s)));
r1.v := 5;
Move(r1, r2, sizeof(r1));
//r2:=r1;
writeln('sref3 = ', SREfCount(pointer(s)));
writeln(r2.nm);
end;
var
s : string;
begin
(* your code goes here *)
s:='number is: '+IntToStr(random(1000));
testFail(s);
writeln('sref4 = ', SREfCount(pointer(s)));
writeln(s);
writeln('sref5 = ', SREfCount(pointer(s)));
end.
cHJvZ3JhbSBpZGVvbmU7CnskbW9kZSBkZWxwaGl9eyRoK30KCnVzZXMgU3lzVXRpbHM7CgovLyBBdXhpbGlhcnkgZnVuY3Rpb24gdG8gZXh0cmFjdCByZWZlcmVuY2UgY291bnQuICAKZnVuY3Rpb24gU1JlZkNvdW50KFAgOiBQb2ludGVyKSA6IGludGVnZXI7ICAKIApUeXBlICAKICBQQW5zaVJlYyA9IF5UQW5zaVJlYzsgIAogIFRBbnNpUmVjID0gUmVjb3JkICAKICAgIENvZGVQYWdlICAgIDogVFN5c3RlbUNvZGVQYWdlOyAgCiAgICBFbGVtZW50U2l6ZSA6IFdvcmQ7ICAKICB7JGlmZGVmIENQVTY0fSAgCiAgeyBhbGlnbiBmaWVsZHMgIH0gIAogICAgRHVtbXkgICAgICAgOiBEV29yZDsgIAogIHskZW5kaWYgQ1BVNjR9ICAKICAgIFJlZiAgICAgICAgIDogU2l6ZUludDsgIAogICAgTGVuICAgICAgICAgOiBTaXplSW50OyAgCiAgZW5kOyAKYmVnaW4gIAogIGlmIFA9TmlsIHRoZW4gIAogICAgUmVzdWx0Oj0wICAKICBlbHNlICAKICAgIFJlc3VsdDo9UEFuc2lSZWMoUC1TaXplT2YoVEFuc2lSZWMpKV4uUmVmOyAgCmVuZDsgCgp0eXBlCiAgVEFSQ3JlY29yZCA9IHJlY29yZAogICAgbm0gOiBzdHJpbmc7CiAgICB2ICA6IGludGVnZXI7CiAgZW5kOwoKCnByb2NlZHVyZSB0ZXN0RmFpbChjb25zdCBzIDogc3RyaW5nKTsKdmFyCiAgcjEgOiBUQVJDcmVjb3JkOwogIHIyIDogVEFSQ3JlY29yZDsKYmVnaW4KICB3cml0ZWxuKCdzcmVmMSA9ICcsIFNSRWZDb3VudChwb2ludGVyKHMpKSk7CiAgcjEubm0gOj0gczsKICB3cml0ZWxuKCdzcmVmMiA9ICcsIFNSRWZDb3VudChwb2ludGVyKHMpKSk7CiAgcjEudiA6PSA1OwogIE1vdmUocjEsIHIyLCBzaXplb2YocjEpKTsKICAvL3IyOj1yMTsKICB3cml0ZWxuKCdzcmVmMyA9ICcsIFNSRWZDb3VudChwb2ludGVyKHMpKSk7CiAgd3JpdGVsbihyMi5ubSk7CmVuZDsKCgoKdmFyCiAgcyA6IHN0cmluZzsKYmVnaW4KCSgqIHlvdXIgY29kZSBnb2VzIGhlcmUgKikKICBzOj0nbnVtYmVyIGlzOiAnK0ludFRvU3RyKHJhbmRvbSgxMDAwKSk7CiAgdGVzdEZhaWwocyk7CiAgd3JpdGVsbignc3JlZjQgPSAnLCBTUkVmQ291bnQocG9pbnRlcihzKSkpOwogIHdyaXRlbG4ocyk7CiAgd3JpdGVsbignc3JlZjUgPSAnLCBTUkVmQ291bnQocG9pbnRlcihzKSkpOwplbmQu