Когда ваша программа завершается, последний цвет, выбранный вами для текста и выводившийся на экран, сохраняется в действии. Поэтому вам может понадобиться напечатать что-то, можно просто '\n', в белом цвете (WHITE), чтобы восстановить белый цвет текста операционной системы, особенно, если курсор находится в нижней строке экрана в готовности к прокрутке вверх.
Пример:
text_color(BRIGHT_BLUE)
См. также:
bk_color
text_rows
Платформа:
DOS32, WIN32
Синтаксис:
include graphics.e
i2 = text_rows(i1)
Описание:
Устанавливает число строк на экране в текстовом режиме, если заданное значение i1 возможно. i2 принимает значение действительного нового числа строк.
Комментарии:
Число строк 25, 28, 43 и 50 поддерживается большинством видеоплат.
См. также:
graphics_mode
tick_rate
Платформа:
DOS32
Синтаксис:
include machine.e
tick_rate(a)
Описание:
Задаёт число прерываний в секунду от таймера. Тем самым устанавливается точность библиотечной функции time() и частота дискретизации при профилировании времени.
Комментарии:
tick_rate() игнорируется под WIN32 и Linux/FreeBSD. Дискретность счёта времени под WIN32 всегда равна 100 прерываниям в секунду.
На PC прерывания от таймера идут обычно с частотой 18.2 прерываний в секунду. tick_rate() позволяет вам увеличить эту частоту, но не уменьшить её.
tick_rate(0) восстановит нормальную частоту 18.2. Euphoria восстанавливает нормальную частоту автоматически при завершении вашей программы, даже при аварийной остановке по обнаруженной ошибке.
Когда программа исполняется в окне DOS с частотой таймера иной, чем 18.2, функция time() не будет убегать вперед, если данное окно не является активным окном.
С частотой таймера, отличающейся от 18.2, функция time() под DOS занимает примерно 1/100 от обычного времени её исполнения. Под Windows и FreeBSD функция time() всегда исполняется очень быстро.
До тех пор, пока ex.exe исполняется, система будет поддерживать правильное время дня. Но если произойдет отказ ex.exe (т.е. вы увидите сообщение об ошибке "CauseWay..."), когда частота таймера установлена высокая, вам (или вашему пользователю) может потребоваться перезапуск машины, чтобы восстановить правильную исходную частоту. Если не сделать этого, системное время будет быстро опережать реальное. Эта проблема не свойственна Windows 95/98/NT и имеет место только под DOS или Windows 3.1. Но вы всегда можете вернуться к правильному времени, поддерживаемому батарейными часами вашей машины, перезагрузив машину.
Пример:
tick_rate(100)
-- time() идёт с шагом .01 секунды
-- вместо обычных .055 секунды
См. также:
time, time profiling
time
Синтаксис:
a = time()
Описание:
Выдаёт число секунд, прошедших от некоторого фиксированного момента в прошлом.
Комментарии:
Если вам нужно измерить, например, сколько времени ушло на выполнение какого-то участка кода вашей программы, найдите разность между двумя отсчетами time(), взятыми в начале и в конце данного участка кода.
Разрешение под DOS32 обычно около 0.05 секунды. Под WIN32 и Linux/FreeBSD разрешение около 0.01 секунды.
Под DOS32 вы можете улучшить разрешение, вызвав процедуру tick_rate() с необходимым параметром.
Под DOS32 период времени, который вы можете так измерить, ограничен 24 часами. После этого величина, выдаваемая time() будет переустановлена и начнётся новый счёт. Если, тем не менее, вы вызывали tick_rate(), и частота часов была выше обычной 18.2/сек, результат time() будет оставаться правильным намного дольше, так как в этом случае Euphoria обрабатывает прерывания от часов прямо и накапливает отсчёты в более ёмкой переменной, 32-битной.
Эмуляция DOS под Windows XP не вполне совершенна. Когда вы производите профилирование времени (with profile_time), функция time() может иметь погрешность до нескольких процентов. Эта проблема не имеет места под Windows ME/98/95.
На некоторых машинах функция time() может выдавать отрицательное число. Тем не менее, вы можете использовать разность отсчётов от time(), чтобы измерять истекшее время.
Пример:
constant ITERATIONS = 1000000
integer p
atom t0, loop_overhead
t0 = time()
for i = 1 to ITERATIONS do
-- время пустого цикла
end for
loop_overhead = time() - t0
t0 = time()
for i = 1 to ITERATIONS do
p = power(2, 20)
end for
? (time() - t0 - loop_overhead)/ITERATIONS
-- вычисление времени (в секундах) одного возведения в степень
См. также:
date, tick_rate
trace
Синтаксис:
with trace
trace(i)
Описание: