Am 26.06.2013 09:41, schrieb Michael Schnell:
On 06/25/2013 01:20 PM, Hans-Peter Diettrich wrote:
Michael Schnell schrieb:
Supposedly the length and encoding number and code-bytecount is copied, too.

Please understand reference counted memory objects :-]
Please check this program I tested with a pre-Unicode Delphi.

It shows that (of course) the string length gets copied when assigning a string variable to another and how it is done.

You do know that s2 will point to the same record of s1 after the assignment? The contents of the string record are not copied, only the pointer of s2 will change. See this example:

=== code begin ===

program tstrassign;

{$apptype console}
{$ifdef fpc}
  {$H+}
{$endif}

{$ifndef fpc}
uses
  SysUtils;

function hexstr(ptr: Pointer): String;
begin
  Result := IntToHex(Integer(ptr), 8);
end;
{$endif}

var
  s1, s2: String;
begin
  s1 := 'Test';
  Writeln(hexstr(Pointer(s1)), ' ', hexstr(Pointer(s2)));
  s2 := s1;
  Writeln(hexstr(Pointer(s1)), ' ', hexstr(Pointer(s2)));
end.

=== code end ===

Regards,
Sven
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to