{ %opt=-gh } {$ifdef go32v2} {$define USE_INTERNAL_UNICODE} {$endif} {$ifdef USE_INTERNAL_UNICODE} {$define USE_FPWIDESTRING_UNIT} {$define USE_UNICODEDUCET_UNIT} {$define USE_CPALL_UNIT} {$endif} program outpar; {$ifdef FPC}{$mode objfpc}{$h+}{$endif} {$ifdef mswindows}{$apptype console}{$endif} uses {$ifdef FPC} {$ifdef unix} cthreads, {$ifndef USE_INTERNAL_UNICODE} {$ifdef darwin}iosxwstr{$else}cwstring{$endif}, {$endif ndef USE_INTERNAL_UNICODE} {$endif} {$endif} {$ifdef USE_UNICODEDUCET_UNIT} unicodeducet, {$endif} {$ifdef USE_FPWIDESTRING_UNIT} fpwidestring, {$endif} {$ifdef USE_CPALL_UNIT} cpall, {$endif} sysutils; {$ifndef FPC} type sizeint = integer; psizeint = ^sizeint; {$endif} procedure testproc(out str); begin ansistring(str):= ''; end; var str1,str2: ansistring; begin setlength(str1,5); move('abcde',str1[1],5); str2:= str1; testproc(str2); if StringRefCount(str1) <> 1 then Halt(1); if str1<>'abcde' then Halt(2); end.