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'.