READ
Variable = READ [ # Stream ] AS Datatype
Variable = READ [ # Stream , ] Length
读取指定数据类型
第一种语法读取
Steam 流作为由
Datatype 参数指定类型的二进制数据。二进制表述形式由
WRITE语句的用法决定。
如果没有指定
Stream ,使用标准输入。
返回的数据类型可以是下列之一:
NULL、
Boolean、
Byte、
Short、
Integer、
Long、
Pointer、
Single、
Float、
Date、
String、
Variant、任意
Array、
Collection或结构体。
如果流的内容不能被解释,引发一个错误。
该语句使用流的字节序(保存数据组织是高位在前或低位在前)作来读取数据。
Reading any object
自从 3.15
任何对象都可以反序列化,前提是它的类实现
_read 特殊方法。
如果对象以前以正确的方式序列化到流中,则可以通过在没有参数的情况下调用其构造函数来重建它,然后调用
_read 方法。
使用以下语法之一读取对象:
Object = READ # Stream As ObjectClass
Object = READ # Stream As Object
Object = READ # Stream As Variant
If you read the object by using
'As Variant'
or
'As Object'
, you have to have written it by using
'As Variant'
or
'As Object'
.
Because in that case the needed object class name is written to the stream. Otherwise the
READ instruction does not have the class name needed to instanciate the object.
读取一个字符串的内容
第二种语法从Stream流中读取由Length参数指定数量的字节,并将其作为一个字符串返回。
如果Length为负数,在流尾部读取由Length的绝对值指定的字节数。
如果没有指定Stream,使用标准输入。
与Gambas 2的兼容性
WRITE #Stream, Expression
在Gambas 2中写入Expression的二进制形式。
在Gambas 3中将Expression作为一个字符串写入。
所以在将Gambas项目从2版转换到3版时,必须检查所有的WRITE语句,并在需要时指定Datatype参数。
作为缺省,编译器支持旧的READ语法和遵照兼容规则的旧的WRITE语法。
如果想检测应该重写的READ/WRITE语句的位置,
可以用"--no-old-read-write-syntax"标志手工编译项目。
如果使用第二种语法,WRITE语句的Length参数成为强制参数。
参见