[Gambas-user] "Write" loses data

Gianluigi bagonergi at gmail.com
Fri Nov 3 16:49:21 CET 2017


Hi Lee & Tobias,
thank you very much.
Ahi old age! These things had already been explained to me by vuott. :-(

Regards
Gianluigi

2017-11-03 16:05 GMT+01:00 Tobias Boege <taboege at gmail.com>:

> On Fri, 03 Nov 2017, Gianluigi wrote:
> > Public Sub Main()
> >
> >   Dim sPath As String = "/tmp/myFile.txt"
> >   Dim i As Integer
> >   Dim fl As File
> >
> >   fl = Open sPath For Create
> >   For i = 1 To 6
> >       Write #fl, "The row " & CStr(i) & "\n"
> >   Next
> >   fl.Close
> >
> >   fl = Open sPath For Append
> >   For i = 7 To 12
> >       Write #fl, "The row " & CStr(i) & "\n"
> >   Next
> >   fl.Close
> >
> >   fl = Open sPath For Write
> >   For i = 1 To 6
> >       Write #fl, "The long row " & CStr(i) & "\n"
> >   Next
> >   fl.Close
> >
> > End
> >
> >
> > Rows 7, 8 and 9 are lost, but "Write" should not just overwrite the first
> > six rows?
> >
>
> You're not operating line-oriented. A file is not an array of variable-
> length lines, but an array of bytes which can only grow at the end.
> If you Write something at position 0, you overwrite what was previously
> at position 0, you are NOT inserting data in the middle.
>
> The rows you write last contain the additional 5 bytes " long" and you
> write 6 of those long lines, resulting in 30 bytes more. The three lines
> that are missing from your file had 10 bytes each, and now you see what
> happens: by writing longer lines, you use up bytes allocated inside the
> file and overwrite exactly 3 lines. It just so happened that the excess
> data aligned well with your shorter lines, so you see no corruption and
> it appears as if some data was magically lost. If you replace " long" by
> " longer", you see a clearer picture:
>
>   The longer row 1
>   The longer row 2
>   The longer row 3
>   The longer row 4
>   The longer row 5
>   The longer row 6
>   he row 11
>   The row 12
>
> Regards,
> Tobi
>
> --
> "There's an old saying: Don't change anything... ever!" -- Mr. Monk
>
> --------------------------------------------------
>
> This is the Gambas Mailing List
> https://lists.gambas-basic.org/listinfo/user
>
> Hosted by https://www.hostsharing.net
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20171103/d43e95b1/attachment.html>


More information about the User mailing list