<p>Am 30.07.2017 08:21 schrieb "Bo Berglund" <<a href="mailto:bo.berglund@gmail.com">bo.berglund@gmail.com</a>>:<br>
> 3) Change the BlockWrite command from<br>
> BlockWrite(F, Buffer[1], Length(Buffer));<br>
> to<br>
> BlockWrite(F, Buffer, Length(Buffer));<br>
><br>
> Note that I would like to *not* specify the index of the first element<br>
> of the array so that the same code can work for both cases depending<br>
> on conditional setting.<br>
> But I am worried that Buffer will reference a different memory<br>
> location than Buffer[0].<br>
><br>
> So are these two calls equivalent when Buffer is an AnsiString or a<br>
> TBytes array:<br>
> BlockWrite(F, Buffer[0], Length(Buffer));<br>
> BlockWrite(F, Buffer, Length(Buffer));</p>
<p>Like with String you need to reference the first element with dynamic arrays, in this case Buffer[0], otherwise you'll write the management record and following unrelated data.<br>
You can either use "Low(buffer)" as the index which *should* work with strings as well, though I don't know whether it always did... If that doesn't work simply write two overloaded inline functions that return the index of the first element depending on whether it's String or TBytes.</p>
<p>Regards,<br>
Sven</p>