Комментарии:
Не пренебрегайте функцией free() для освобождения и повторного использования программой участков памяти, занятых вами в дополнение к автоматическому её распределению во время работы программы. Это снизит вероятность нехваток оперативной памяти или чрезмерного обмена с дисковой виртуальной. Не обращайтесь по тем адресам, которые были освобождены. Когда ваша программа завершается, вся занятая ею память будет возвращена операционной системе автоматически.
Не вызывайте free(), чтобы освободить память, занятую в нижних адресах с помощью функции allocate_low(). Для этого имеется специальная процедура free_low().
Пример программы:
demo\callmach.e x
См. также:
allocate, free_low
free_console
Платформа:
WIN32, Linux, FreeBS D
Синтаксис:
include dll.e
free_console()
Описание:
Закрывает (удаляет) консольное окно, связанное с вашей программой (если оно существует).
Комментарии:
Эта процедура используется, если вы получаете нежелательное сообщение "Press Enter" в конце исполнения вашей программы на платформах Windows или Linux/FreeBSD.
См. также:
clear_screen, platform_r.htm
free_low
Платформа:
DOS3 2
Синтаксис:
include machine.e
free_low(i)
Описание:
Освобождает ранее занятый участок стандартной памяти. Аргумент i представляет собой начальный адрес участка, который был вами получен при выделении участка с помощью функции allocate_low().
Комментарии:
Процедуру free_low() следует использовать для возвращения участков стандартной памяти в резерв программы во время её работы. Это снизит вероятность исчерпания стандартной памяти. Не обращайтесь к тем участкам памяти, которые были освобождены. Когда ваша программа завершается, вся занятая ею память, включая резервы программы, возвращается в распоряжение операционной системы.
Не используйте free_low() для освобождения той памяти, которая была выделена с помощью функции allocate(). Для этого случая существует своя собственная процедура free().
Пример программы:
demo\dos32\dosint.e x
См. также:
allocate_low, dos_interrupt, free
get
Синтаксис:
include get.e
s = get(fn)
Описание:
Считывает из файла fn строковое (текстовое) представление объекта Euphoria. Преобразует строковое представление в численное значение данного объекта, которое может быть затем присвоено переменной. Выдаваемый функцией ряд является 2-х элементным рядом вида: {результат чтения, значение объекта}.
Коды, обозначающие результат чтения (константы определены в файле get.e):
GET_SUCCESS -- объект прочитан успешно (0)
GET_EOF -- файл закончился до прочтения объекта (-1)
GET_FAIL -- объект синтаксически некорректен (1)
Функция get() может считывать объекты Euphoria произвольной сложности. В файле могут содержаться длинные ряды величин, разделённых запятыми, в фигурных скобках и величины в кавычках, например, {23, {49, 57}, 0.5, -1, 99, 'A', "john"}. Единственный вызов get() будет читать данные в этом входном тексте и выдавать значение объекта как результат.
Каждый последующий вызов get() находит место, где остановился предыдущий. Например, серия из 5 вызовов get() будет нужна для прочтения следующей серии объектов:
99 5.2 {1,2,3} "Hello" -1.
Здесь, начиная с шестого вызова get() и во всех последующих, вы будете получать результат чтения GET_EOF. А если во входном тексте у вас будет что-либо вроде:
{1, 2, xxx} или {1+1, 2*2, 3-2},
то вы получите результат чтения GET_FAIL, так как xxxне является строковым представлением объекта Euphoria, а выражения на входе функции get() не допускаются.
Объекты "высшего уровня" во входном тексте должны быть отделены друг от друга одним или более символов "пробела" (пробел, знак табуляции, \r или \n). Эти "пробелы" игнорируются Euphoria внутри текстового представления объектов высшего уровня. Каждый вызов get() будет читать один входной объект высшего уровня плюс один добавочный символ "пробела", имеющегося между объектами.
Комментарии:
Комбинация процедур print() и get() очень удобна для записи Euphoria-объектов на диск и последующего их чтения. Эта техника может быть использована для организации базы данных как одного или нескольких больших рядов Euphoria, размещённых в дисковых файлах. Ряды могут быть считаны в переменные, обновлены и затем записаны на диск после каждой завершённой серии транзакций. Не забывайте выводить символ "пробела" (используя puts()) после каждого вызова print().
Выдаваемые данные всегда имеют маловыразительный числовой формат, в котором строки представлены кодами ASCII.
Читать дальше