Реферат: Консольное приложение на Дельфи
Название: Консольное приложение на Дельфи Раздел: Рефераты по информатике, программированию Тип: реферат |
Хоть и консольные приложения уже давно вышли из моды, с помощью них можно легко делать рутинные операции. Они занимают не так много места, не требовательны к ресурсам и быстро выполняются. В этой статье мы рассмотрим создание простейшего консольного приложения Intro Надеюсь, я вас убедил, что консольные программы в "домашнем хозяйстве" это есть гуд. Можно наделать кучу программок, со смешным размером, помогающих практически во всем. Но как же написать такое приложение? Сейчас расскажу. Что бы написать консольное приложение нужно в меню Project выбрать команду View Source. Затем закрыть Все юниты, которые были в проекте и оставить "голый" dpr файл проекта. Его нужно привести к такому виду: program Project1; {$APPTYPE CONSOLE} begin end. Директива {$APPTYPE CONSOLE} предназначена для компилятора и сообщает ему, что программу нужно генерировать как консольное приложение. Следует обратить внимение на то, что в Windows спользуется кодировка символов ANSI, а в досе ASCII. Из-за этого вместо русских символов мы рискуем увидеть абракадабру. Для преобразования русских символов в ASCII в каждом вашем проекте будет нужна функция function AnsiToAscii(s : string):string; var i : Integer; begin for i:=1 to length(s) do begin case s[i] of 'А'..'п' : s[i]:=Chr(ord(s[i])-64); 'р'..'я' : s[i]:=Chr(ord(s[i])-16); end; end; AnsiToAscii:=s end; Write и WriteLn Для вывода сообщений в окно применяются процедуры Write и WriteLn. Их основное отличие друг от друга состоит в том, что после выполнения процедура Write каретка остается после слова, а после WriteLn перемещается на новую строку. Пример: Write('Some text'); write('else some text'); Мы увидим: Some textelse some text. WriteLn('Some text'); Write('else some text'); Мы увидим: Some text else some text Read и ReadLn Процедуры Read и ReadLn предназначены для ввода в программу значений переменных, т.е. считывания введенных пользователем значений. Они отличаются друг от друга тем, что после выполнения процедуры Read можно прочитать той же функцией число, стоящее после другого числа. А если мы применим ReadLn, то все значения, после первого, игнорируются и каретка перемещается на следующюю строку. Outro Ну и на последок небольшой пример: program kilometerstometters; {$APPTYPE CONSOLE} uses SysUtils; function AnsiToAscii(s : string):string; //эта функция позволяет отображать var i : Integer; //русские символы begin for i:=1 to length(s) do begin case s[i] of 'A'..'ï' : s[i]:=Chr(ord(s[i])-64); 'ð'..'ÿ' : s[i]:=Chr(ord(s[i])-16); end; end; AnsiToAscii:=s end; var metters, kilometers : Integer; comm : String; t : Boolean=false; label b; begin metters := 0; //инициализация переменных kilometers := 0; comm := ''; t := false; writeln('(C)Brutus, 2003, http://pz1.traffichouse.de'); b: t := false; writeln(AnsiToAscii('Введите величину в километрах и нажмите ')+'[Enter]'); write('->'); try readln(kilometers); metters := kilometers*1000; except writeln(AnsiToAscii('Ошибка! Введите правильное число.')); t := true; end; if t=true then goto b; writeln(AnsiToAscii('Результаты:')); writeln(AnsiToAscii(IntToStr(kilometers)+' километров это '+IntToStr(metters)+' метров')); writeln(AnsiToAscii('Введите слово ')+'''again'''+AnsiToAscii(', что бы перевести еще что нибудть. Что бы выйти нажмите просто ')+'[Enter]'); try readln(comm); if (comm='again') or (comm='''again''') then t := true; except end; if t=true then goto b; end. |