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 довольно удобный на мой взгляд. Единственный его недостаток, это нельзя получить данные из произвольного места, пока не прочитаешь до этого места. Всего доброго!
содержание | назад | вперед