PureBasic

Data

Краткое описание функций:
DataSection EndDataSection Data
Restore Read ...

Введение

PureBasic позволяет использовать Секции данных (Data-Section), для хранения предварительно подготовленных блоков информации, прямо в коде вашей программы. Это позволяет иметь в программе множество значений по умолчанию, или текстовые сообщения для интерфейса или диалога. Так же можно записывать заранее вычисленные таблицы и тд.

Ключевое слово DataSection должно быть в верхней части Секции данных. Все метки и компоненты данных хранятся в области Секции данных, доступ к которой быстрее, чем в области кода.
Ключевое слово Data используются для ввода данных программистом.
Ключевое слово EndDataSection должно использоваться, если после Секции данных следует программный код. Одним из преимуществ является то, что Вы без проблем можете организовать несколько Секций данных в коде.
Команды Restore и Read используются, чтобы получить данные из Секции данных во время выполнения программы.

Команды для организации Секции данных:




Синтаксис
DataSection

Описание


Начало Секции данных.

Пример (Фран)

DataSection
    DonneesNumeriques:
    Data.l 100, 200, -250, -452, 145

    DonneesTexte:
    Data.s "Bonjour", "Qu'est-ce", "que ", "c'est ?"
EndDataSection





Синтаксис
EndDataSection

Описание


Конец Секции данных.

Пример (Фран)

DataSection
    DonneesNumeriques:
    Data.l 100, 200, -250, -452, 145

    DonneesTexte:
    Data.s "Bonjour", "Qu'est-ce", "que ", "c'est ?"
EndDataSection





Синтаксис
Data.Type

Описание


Производит объявление данных. В качестве параметра Type может быть указан суффикс соответствующий только встроенным основным типам Purebasic (integer, long, word, byte, ASCII, unicode, float, double, quad, character, string). В строке может находиться любое количество данных, разделённых запятой ','.

Пример

Data.l 100, 200, -250, -452, 145
Data.s "Hello", "This", "is ", "What ?"

Для опытных программистов: также в Data можно поместить адреса процедур или адреса меток, если используется тип 'integer' (.i). Использование типа 'integer' сохранит адреса с точностью как в 32-битной, так и в 64-битной системе. Это может использоваться, например, для создания простых таблиц виртуальных функций.

Пример

Procedure Max(Number, Number2)
EndProcedure

Label:

DataSection
    Data.i ?Label, @Max()
EndDataSection

Пример

Interface MyObject
    DoThis()
    DoThat()
EndInterface

Procedure This(*Self)
    MessageRequester("MyObject", "This")
EndProcedure

Procedure That(*Self)
    MessageRequester("MyObject", "That")
EndProcedure

m.MyObject = ?VTable

m\DoThis()
m\DoThat()

DataSection
    VTable:
    Data.i ?Procedures
    Procedures:
    Data.i @This(), @That()
EndDataSection




Синтаксис
Restore label

Описание


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

Пример

Restore StringData
Read.s MyFirstData$
Read.s MySecondData$

Restore NumericalData
Read.l a
Read.l b

Debug MyFirstData$
Debug a

End

DataSection
    NumericalData:
    Data.l 100, 200, -250, -452, 145

    StringData:
    Data.s "Hello", "This", "is ", "What ?"
EndDataSection




Синтаксис
Read[.<type>] <variable>

Описание


Считывает следующие доступные данные. Следующие доступные данные - это данные после уже считанных, либо первые объявленные данные, если чтения ещё не было, порядок можно изменять посредством команды Restore. Тип данных определяется суффиксом типа, если он не указан, будет использоваться тип 'integer'.