WRITE
WRITE [ # Stream , ] Expression AS Datatype
WRITE [ # Stream , ] String [ , Length ]
WRITE [ # Stream , ] Pointer , Length
Writing a specific datatype
The first syntax writes an expression to the
stream Stream by using their binary representation.
If the
stream is not specified, the standard output is used.
 |
When writing a string, the length of the string is sent before the string contents.
See Binary Data Representation for more information.
|
The datatype of
Expression can be one of the following :
NULL,
Boolean,
Byte,
Short,
Integer,
Long,
Pointer,
Single,
Float,
Date,
String,
Variant, any
Array or
Collection, or any structure.
If
Expression is a collection, an array, or a structure, then its contents are written recursively.
When writing a structure, the structure type must be specified as
Datatype.
If an unsupported datatype is written, or if a circular reference is detected, an error is raised.
 |
This instruction uses the byte order of the stream to write the data.
|
Writing the contents of a string
The second syntax writes
Length bytes from the string
String to the specified
stream.
If the
stream is not specified, the standard output is used.
If
Length is not specified, the length of
String is used.
Writing the contents of memory
The third syntax writes
Length bytes from the memory address
Pointer to the specified
stream.
If the
stream is not specified, the standard output is used.
Length must be specified, otherwise nothing is done.
Compatibility with Gambas 2
 |
BEWARE!
WRITE #Stream, Expression writes the binary form of Expression in Gambas 2.0.
In Gambas 3.0 it writes Expression as a string.
So you HAVE to check all your WRITE instructions when converting a Gambas project from 2.0 to 3.0, and
specified AS Datatype when need.
By default, the compiler supports the old READ syntax, and the old WRITE syntax too as it is compatible.
If you want to detect where you should rewrite your READ / WRITE syntax, you can
compile your project by hand with the "--no-old-read-write-syntax" flag. Then
the Length argument of WRITE becomes mandatory if the second syntax is used.
|
 |
Using a Pointer as a stream is not possible anymore. Create a memory stream with the MEMORY instruction instead.
|