<span style="font-family:courier new,monospace">Hi,<br><br>I encountered unpredictable behavior with the following code:<br><br>var<br>  fs: TFileStream;<br>  s: string;<br>begin<br>  ... ...<br>  fs.Write(s, Length(s));<br>

  ... ...<br>end;<br><br>But if I do this, then problem is gone:<br></span><br><span style="font-family:courier new,monospace"><span style="font-family:courier new,monospace">var<br>  fs: TFileStream;<br>  s: string;<br>
  buf: PChar;<br>
begin<br>  ... ...<br>  buf := GetMem(Length(s) + 1);<br>  StrPCopy(buf, s);<br>  fs.Write(buf^, Length(s));<br>  ... ...<br>end;<br><br>My question is, why the above code with string works sometime, but not alwasy fail? What is the internal structure of string and variable array (i.e. array of something)?  What is the difference between @string and @string[1] or @array and @array[0]? <br>

<br>Thanks<br></span><br><br></span>