•  
Создано: 04.09.2010 5:11:06 · Исправлено: 04.09.2010 5:11:06 · Прочтений: 6151

Консольным называется приложение, имитирующее работу в текстовом режиме. Пользователь работает с программой практически так же, как в среде DOS. При запуске консольного приложения Windows выделяет окно как для DOS-программы, в заголовке окна отображается название исполняемого файла. Ввод/вывод данных осуществляется с помощью процедур read, readln, write и writeln. К консольному приложению автоматически подключаются файлы input и output. Несмотря на то, что пользователь работает с консольным приложением так же, как с DOS-программой, оно является приложением Windows и не работает под DOS.

Достоинство консольных приложений – относительная простота использования и лёгкость переноса программ, написанных на языке Pascal, в систему программирования Delphi. Кроме того, исполняемый ехе-файл консольной программы намного меньше по размеру (десятки килобайт) по сравнению с исполняемым файлом Delphi-варианта такой же программы (сотни килобайт).

Проще всего создать консольное приложение через репозиторий. В репозитории (команда File|New|Other) на странице New имеется объект Console Аpplication, представляющий собой Console Wizard – Мастер консольного приложения. Если выбрать этот объект, то будет создан новый проект, состоящий из одного файла с расширением dpr. Этот файл и является консольной программой. Созданный Мастером код похож на заготовку обычной программы на языке Pascal, написанной под DOS. Единственным отличием является директива $APPTYPE, которая значением CONSOLE сообщает компилятору, что Delphi-программа работает в консольном режиме.

Консольное приложение можно создать также на основе проекта обычного приложения следующим образом. Первоначально по команде File|New|Aplication создаётся новое приложение. Консольное приложение не включает формы, поэтому из проекта нужно удалить форму Form1. С этой целью по команде Project|Remove from Project (Проект|Удалить из проекта) вызывается диалоговое окно Remove from Project удаления форм из проекта, в котором для данного проекта содержится один модуль unit1 формы. Нужно выбрать этот модуль и удалить его.

Затем вызывается окно редактора кода, в нем открывается файл проекта (dpr), в который вносятся соответствующие изменения.

Далее к заготовке консольного приложения добавляется необходимый код. Как и любая программа на языке Pascal, консольное приложение может включать отдельные модули.

program demo;
{$APPTYPE CONSOLE}
uses SysUtils;
begin
writeln('Проверка');
end.

Завершив работу с консольным приложением, нужно нажать клавишу Enter. После этого окно, в котором функционировало консольное приложение, автоматически будет закрыто.

Консольное приложение Delphi представляет собой не просто программу, написанную на языке Object Pascal и выполняемую в среде Windows. Система Delphi поддерживает создание 32-разрядных консольных приложений, имеющих доступ к ресурсам операционной системы и использующих различные функции API Windows. При этом в разделе uses нужно подключать модули, средства которых применяются в программе. Для организации ввода-вывода информации используются стандартные процедуры:

Read(<файловая_переменная>,<список_ввода>);
Readln(<файловая_переменная>,<список_ввода>);
Write(<файловая_переменная>,<список_вывода>);
Writeln(<файловая_переменная>,<список_вывода>);

Первым параметром в любой из перечисленных процедур может стоять файловая переменная. В этом случае выполняется обращение к дисковому файлу или логическому устройству, связанному с файловой переменной. Если файловая переменная не указана, то подразумевается использование текстовых файлов input или output. Input используется при чтении данных с клавиатуры, а output – при выводе данных на экран:

Read (a,b,x2);
Readln (p,q5);
Write (n:5,x:4:1;y:7:2);
Writeln (name, ' ':3, 2*x+3:6:0);

Специфика обработки текстовых файлов заключается в том, что процедуры ввода-вывода позволяют работать со значениями не только символьного типа: фактическими параметрами могут быть символы, строки и числа. Последовательность символов автоматически преобразуется к значению переменной того типа, который задан в списке ввода-вывода.

При вводе числовых значений процедура Read выделяет подстроку по следующему правилу:

  • все ведущие пробелы, символы табуляции и маркеры конца строк пропускаются;
  • после появления первого значащего символа любой из перечисленных символов или код конца файла служат признаком конца подстроки.

Выделенная таким образом подстрока рассматривается как символьная запись числа соответствующего типа и преобразуется во внутреннее представление; полученное значение присваивается переменной.

Если при вводе чисел нарушен формат (например описана переменная типа integer, а задано число real), то во время работы программы возникнет ошибка ввода-вывода. Если при пропуске ведущих пробелов встретится символ конца файла, то переменная получит значение ноль.

При вводе с клавиатуры символьные строки запоминаются в буфере. Содержимое буфера передаётся процедуре только после нажатия клавиши Enter. Это позволяет редактировать данные при вводе. Ввод информации сопровождается эхо-повтором на экране.

Отличие процедуры Readln от Read заключается в том, что после считывания последней переменной, фигурирующей в списке ввода, оставшаяся часть строки до маркера конца строки пропускается. Следующее обращение к Readln или Read выполняет чтение с первого символа новой строки. Readln можно использовать без списка ввода, это обеспечивает пропуск строки.

Процедуры Write, Writeln выводят информацию в файл или на логическое устройство. Если файловая переменная описана как текстовая, то список вывода может содержать символы, строки, вещественные и целые числа, а также выражения типа boolean. В последнем случае записывается true или false, в зависимости от текущего значения логической переменной.

Элемент списка вывода, например х, может быть записан в виде x:k:m. Значение k задаёт ширину поля вывода символьного представления переменной x. Если символьное представление имеет меньшую длину, то оно будет дополнено пробелами слева; если длиннее – то параметр k игнорируется и переменная выводится целиком. Параметр m определяет выводимое количество десятичных знаков в дробной части числа. Этот параметр используется только для вещественных чисел и только совместно с параметром k. Если ширина поля вывода не указана, то переменные выводятся подряд, без разделения, вещественные числа записываются в экспоненциальном формате.

При использовании Writeln выводимая строка завершается символами конца строки. Последующее применение процедур Write и Writeln обеспечивает запись информации с новой строки.