WRITE
WRITE [ # Stream , ] Expression AS Datatype
WRITE [ # Stream , ] String [ , Length ]
WRITE [ # Stream , ] Pointer , Length
Scrittura di un tipo di dati specifico
La prima sintassi scrive un'espressione nello stream
Stream usando la loro rappresentazione binaria.
Se lo stream non è specificato, viene utilizzato lo standard output.
Quando si scrive una stringa, la lunghezza della stringa viene inviata prima del contenuto della stringa.
Vedi
Rappresentazione binaria dei dati per maggiori informazioni.
Il tipo di dati di
Expression può essere uno dei seguenti :
NULL,
Boolean,
Byte,
Short,
Integer,
Long,
Pointer,
Single,
Float,
Data (Date),
String,
Variant, qualsiasi
Array o
Collection, o qualsiasi struttura.
Se
Expression è una collezione, un array, o una struttura, i suoi contenuti vengono scritti in modo ricorsivo.
Quando scrivi una struttura, il tipo di struttura deve essere specificato come
Datatype.
Se viene scritto un tipo di dati non supportato o se viene rilevato un riferimento circolare, viene generato un errore.
Questa istruzione utilizza l'ordine dei byte dello stream per scrivere i dati.
Scrittura di un oggetto specifico
Dal 3.15
Qualsiasi oggetto può essere serializzato, a condizione che la sua classe implementi il metodo speciale
_write.
Si scrive l'oggetto utilizzando una delle seguenti sintassi:
WRITE #Stream, Object As <ObjectClass>
WRITE #Stream, Object As Object
WRITE #Stream, Object As Variant
Se leggi l'oggetto dopo aver usato
'As Variant'
o
'As Object'
, devi scriverlo usando sempre
'As Variant'
o
'As Object'
.
Perché in tal caso il nome della classe oggetto è necessario per essere scritto nel flusso. Altrimenti l'istruzione
READ non ha il nome della classe necessario per istanziare l'oggetto.
Scrittura del contenuto di una stringa
La seconda sintassi scrive la lunghezza (
Length) in byte dalla stringa
String allo stream specificato.
Se lo stream non è specificato, viene utilizzato lo standard output.
Se
Length non è specificato, viene usata la lunghezza di
String .
Scrittura del contenuto della memoria
La terza sintassi scrive i byte di
Length dall'indirizzo di memoria puntato da
Pointer allo stream specificato.
Se lo stream non è specificato, viene utilizzato lo standard output.
Length deve essere specificato, altrimenti non viene fatto nulla.
Compatibilità con Gambas 2
ATTENZIONE!
WRITE #Stream, Expression
scrive la forma binaria di Expression in Gambas 2.0. In Gambas 3.0 scrive
Expression come stringa.
Quindi è necessario controllare tutte le istruzioni
WRITE durante la conversione di un progetto Gambas da 2.0 a 3.0 e specificare
AS Datatype
quando necessario.
Di default, il compilatore supporta la vecchia sintassi
READ e anche la vecchia sintassi WRITE in quanto compatibile.
Se vuoi rilevare dove dovresti riscrivere la sintassi
READ / WRITE, puoi compilare il tuo progetto a mano con il flag "--no-old-read-write-syntax". Quindi l'argomento
Length di WRITE diventa obbligatorio se viene utilizzata la seconda sintassi.
L'utilizzo di
Pointer come stream non è più possibile. Creare al suo posto uno stream di memoria con l'istruzione
MEMORY.
Vedi anche