|
||||||||
|
|
Простое консольное приложение на Delphi
В школе или в высшем учебном заведении вы наверное сталкивались с программированием различных алгоритмов. Сортировка массивов, вычисление формул, работа со строками и т.п. Для создания таких простых программ нет необходимости использовать богатые возможности графического интерфейса. К тому же, это иногда довольно сложно сделать (например, работая в Turbo Pascal, Turbo C или в Linux). Все что нужно, это вводить и выводить текстовую информацию. Для этого можно использовать консоль - инструмент, который можно найти в любой операционной системе. Само по себе консольное приложение использует три вида функций для работы с консолью - ввод (Read, scan, ...), вывод (Write, print, echo, ...), а также управление параметрами консоли. В начале попробуем создать приложение "Hello, World!", которое будет выводить эту же надпись в консоль. Для этого загрузим Delphi и в меню File -> New выберем пункт Other. В открывшемся окне выберем значок Console Application: После нажатия OK система создаст готовое консольное приложение, которое, однако, ничего не делает. Вы можете увидеть примерно такой текст: program Project2;
{$APPTYPE CONSOLE} uses SysUtils; begin { TODO -oUser -cConsole Main : Insert code here } end. Можно заметить, что директива APPTYPE с параметром CONSOLE устанавливает тип приложения как консольное. Это означает, что при запуске программы будет создана консоль и приложение получит стандартные дескрипторы ввода (stdin), вывода (stdout) и ошибки (stderr). В Delphi эти переменные называются Input, Output и ErrOutput соответственно и имеют тип TextFile. Если программа была запущена другим приложением, у которого есть своя консоль, но наша программа примет дескрипторы своего родителя и будет работать с его консолью. Для вывода какой-либо информации используются процедуры Write и WriteLn. Последняя отличается от первой тем, что после вывода информации переходит в начало следующей строки. procedure Write([var F: file;] const Value; [const Value2, Value3, ...]);
procedure WriteLn([var F: file;] const Value; [const Value2, Value3, ...]); Параметр F описывает файл, в который будет происходить вывод данных. Этот параметр может быть не задан, в таком случае вывод будет происходить в файл, ассоциированный с переменной Output, т.е. по умолчанию в консоль. Value, Value2, ... - значения числовых, логических или строковых типов. Функция может принимать любое количество параметров, в том числе и нулевое. Теперь выведем надпись "Hello, World!": program Project2;
{$APPTYPE CONSOLE} begin WriteLn('Hello, World!'); end. Запустив программу клавишей F9 мы на мгновение увидим консоль, однако, она сразу же исчезнет. Программы выполнит вывод в консоль и завершит работу, а с ней и исчезнет консоль. Посмотреть результат выполнения программы можно из консоли Windows, которая запускается командой cmd в окне Выполнить из меню Пуск: D:\Delphi2006\Projects>Project2.exe
Hello, World! D:\Delphi2006\Projects> Теперь попробуем что-нибудь ввести с клавиатуры. Пусть это будет некое число, которое мы тут же выведем. Для ввода данных используется процедуры Read и ReadLn. Последняя отличается от первой тем, что после ввода своих данных переносит текущую позицию на начало следующей строки. Данные для разных переменных необходимо разделять строкой или пробелом. Строковые данные вводятся до конца текущей строки файла (консоли). procedure Read([var F: file;] var Value; [var Value2, Value3, ...]);
procedure ReadLn([var F: file;] var Value; [var Value2, Value3, ...]); Все параметры аналогичны процедурам ввода. Если параметр F не указан, то используется стандартная переменная для ввода Input. Теперь программа: program Project2;
{$APPTYPE CONSOLE} var N: integer; begin Write('N = '); ReadLn(N); WriteLn('The number is ',N); ReadLn; end. Процедура ReadLn, вызванная без параметров, задержит выполнение программы до нажатия клавиши Enter. Таким образом консоль не будет исчезать после запуска программы. N = _
N = 10
The number is 10 Таким образом можно создавать простые приложения, которые будут использовать для ввода и вывода консоль. Вот пример приложения, которое выводит таблицу значений синуса угла: program Project2;
{$APPTYPE CONSOLE} var X, dX, A: double; N, i: integer; begin Write('X = '); ReadLn(X); Write('dX = '); ReadLn(dX); Write('N = '); ReadLn(N); WriteLn; WriteLn(' X | sin(X)'); WriteLn('---------+------------'); for i:=0 to N do begin A := X + dX * i; WriteLn( A:8:1, ' |',sin(A/180*Pi):10:4); end; ReadLn; end. Процедура WriteLn, вызванная без параметров, просто переведет текущую позицию на начало новой строки, не выводя никаких данных. Также у каждого параметра через двоеточие можно задать, сколько минимально символов выводить. Если длина значения параметра меньше этого числа, то оставшиеся символы слева дополняются пробелами. Для вещественных чисел также можно указать, до какого знака это число надо округлить. Таким образом для параметра "123.4567:8:2" в консоль пойдет "__123.46". Вот вывод программы: X = _ X = 90
dX = _ X = 90
dX = 10 N = _ X = 90
dX = 10 N = 18 X | sin(X) ---------+------------ 90.0 | 1.0000 100.0 | 0.9848 110.0 | 0.9397 120.0 | 0.8660 130.0 | 0.7660 140.0 | 0.6428 150.0 | 0.5000 160.0 | 0.3420 170.0 | 0.1736 180.0 | -0.0000 190.0 | -0.1736 200.0 | -0.3420 210.0 | -0.5000 220.0 | -0.6428 230.0 | -0.7660 240.0 | -0.8660 250.0 | -0.9397 260.0 | -0.9848 270.0 | -1.0000 |
||||||
|