Data
 
Оператор для хранения данных во время компиляции.

Синтаксис

Data constant_expression1 [,constant_expression2]...

Описание

Data хранит список числовых констант или буквенных выражений, которые вычисляются во время компиляции (прим. поведение отличается в диалекте -lang qb) и сохраняются в виде констант, которые можно прочитать в переменные с помощью Read.

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

Data заявления видны только из модуля, в котором они определены.

Data константы могут быть только простых типов (числовые или строковые). Числовое значение может быть прочитано как числовой литерал в строку. Строка прочитанная в числовую переменную будет оценена функцией Val. Const(константы) могут быть использованы в качестве элементов данных, за исключением диалекта -lang qb, где их имена считаются как обычный текст.

Заявление "Restore label" делает первый элемент Data после label следующим элементом для чтения, позволяя пользователю выбрать определенные разделы данных для чтения.

Data обычно используется для инициализации переменных. FreeBASIC также позволяет инициализацию статических переменных, когда они Dim(размерены) - см. Переменные Инициализаторы для получения дополнительной информации.

Пример

' Создать массив из 5 чисел и строку для хранения данных.
Dim As Integer h(4)
Dim As String hs
Dim As Integer readindex

' Установка цикла на 5 итераций (для пяти чисел... проверьте data)
For readindex = 0 To 4

  ' Прочитать в Integer.
  Read h(readindex)

  ' отобразить его.
  Print "Number" ; readindex ; " = " ; h(readindex)

Next readindex

' Пустая строка.
Print

' Прочитать в строку.
Read hs

' напечатать ее.
Print  "String = " + hs

' Ожидание нажатия клавиши.
Sleep

' выход из программы.
End

' Блок данных.
Data 3, 234, 435/4, 23+433, 87643, "Good" + "Bye!"


Различия диалектов

  • -lang fb и -lang fblite считают элементы данных в качестве константных выражений, которые оцениваются во время компиляции и его результатом, хранящимся в программе.
  • -lang qb считает слова без кавычек, в том числе имена переменных и констант, в виде текстовых строк и сохраняет их без изменения, как в QBASIC. Строки без кавычек разделяются запятыми, а двоеточие или разрыв строки означает конец оператора Data. В строках без кавычек удаляются пробелы в начале и в конце.

Отличия от QB

  • Вне -lang qb диалекта, алфавитные строковые литералы должны быть заключены в кавычки, в QBASIC это было необязательно.
  • В QBasic пустые элементы оценивались как 0 или как пустые строки, в FreeBASIC они дают ошибку компиляции. В QBASIC запятая в конце заявления делала дополнительный, пустой элемент, оцениваемый как 0 или пустая строка. В FreeBASIC это дает ошибку компиляции.

См. также