DATA-READ-RESTORE

Оператор DATA позволяет создать область данных любого типа. Эта область при компиляции как и исходный код будет зашита в скомпилированный файл. То есть другими словами это хранилище. Данные могут быть разные. Объявляется область данных оператором DATA, после которого через запятую следуют числовые или строковые значения. Не важно в какой последовательности вы запишете строки, целые или дробные числа. Следует помнить, что область данных не может лежать в области функции или процедуры, но может находиться в любом месте кода. Чаще всего ее выносят за рамки кода (в самом низу ). Запись с помощью DATA выглядит таким образом:

Data 3, 10 , "FreeBasic"

А читается все это дело с помощью оператора READ. Пример:

Dim As Integer x,y
Dim As String st
Read x
Read y
Read st
? x,y,st
Sleep
Data 3, 10 ,"FreeBasic"

Всегда следует учитывать размер области данных , поскольку если сделать лишнюю операцию командой Read , то будет выход за рамки дозволенной памяти, а это при работе с данными, чаще всего заканчивается вылетом программы. Для того, чтобы была возможность заново прочитать блок данных, нужно вернуть указатель на начало. Данной возможностью обладает оператор Restore. Пример:

Dim As Byte Q
For a As Integer=1 To 10
    Read Q
    ? Q
Next
Restore
For a As Integer=1 To 10
    Read Q
    ? Q
Next
Sleep
Data 10,20,30,40,50,60,70,80,90,100

Есть и другая возможность использовать оператор DATA. Совсем необязательно все хранить в одном большом блоке. Можно для строковых данных отнести свой блок, для байтовых свой и т. д. Для этого нужно указывать имя блока или метку, а при получении указывать текущий блок с помощью оператора Restore. Пример:

Dim As Byte Q
Dim As String ST
Restore BYTEDATA
For a As Integer=1 To 10
    Read Q
    ? Q
Next
Restore STRINGDATA
For a As Integer=1 To 10
    Read ST
    ? ST
Next
Sleep

BYTEDATA:
Data 10,20,30,40,50,60,70,80,90,100
STRINGDATA:
Data "A","B","C","D","E","F","G","H","I","J"

Оператор DATA довольно удобный на мой взгляд. Единственный его недостаток, это нельзя получить данные из произвольного места, пока не прочитаешь до этого места. Всего доброго!

содержание | назад | вперед