|
||
Для тех, кто недавно подписались: сначала прочтите первые два выпуска, которые находятся в архиве рассылки. Также повторю, что эта рассылка в основном преднозначена для тех, кто ещё не программировал ВООБЩЕ или очень мало, но хотят научиться создавать OpenGL приложения. Так что "нормальный" программист в самом начале рассылки ничего нового не найдёт. :) Проекты Delphi. Delphi для каждой программы создаёт проект. Он состоит из нескольких файлов: главный файл проекта (*.dpr), файл с описанием интерфейса формы (*.dfm) и файл , в котором хранится весь код (*.pas). Есть и другие файлы, но эти 3 самые главные! Если не хватает хоть одного - программа не запустится. Чтобы открыть проект надо выбирать файл *.dpr, а сохраняются *.dpr и *.pas. Файлы, у которых расширения начинаются с тильды (~) - запасные копии. После компиляции проекта (из кода создаётся готовая программа) в той же самой папке (с проектом) создаётся файл с расширением *.exe. Это и есть ваша программа. :) Совет: для каждого проета создавайте отдельную папку. Чтобы сохранить весь проект, выберите File->Save All. Первым сохраняется файл с расширением *.pas. Ему названия менять не обязательно. Второй файл - сам проект. Его название совпадает с названием программы (в визуальной среде), так что выбирайте правильное название (должно начинаться с буквы и не может содержать пробелы, используются только латинские буквы!) :) Продолжаем. В прошлом выпуске мы познакомились с визуальной средой программирования Delphi и создали первую программу - медиаплеер. Но таких примеров, т.е. таких программ мы делать почти не будем! Главная цель - OpenGL графика. И работать мы будем в другом интерфейсе. Вся наша работа будет происходить в редакторе кода. Может вам сначала покажется, что это очень не удобно, но это совсем не так! Я уверен, что вы полюбите :) редактор кода и часто будите избегать визуального программирования. Я знаю, что многие из вас не знают почему будем "тусоваться" :) в редакторе кода, когда на много удобнее работать с визульной средой, т.е. с готовыми компонентами и другими удобствами. :) Ну, насчёт удобств я отрицать не буду. Но в таких программах есть и свои минусы: 1. Размер. Сохраните проект с вашим медиаплеером и его откомпилируйте. Чтобы создать программу (откомпилировать) просто запустите проект (вы уже знаете как это делается), или, чтобы сразу не включать программу - выберите в меню Project->Compile <название_проекта>. Найдите в папке с проектом свою программу, <название_проекта>.exe. Проверьте сколько места он занимает! 300? 400 Кб? :) А в невизуальной среде сделана программа бедет занимать 30 Кб! :) 2. Скорость. В готовых компонентах (и в форме) есть куча ненужных вещей, которые вы не используете и которые загружают компьютер, а также действуют медленно. Это две главные причины (а их на самом деле больше!). Так, что скажите? Передумали с визуальной средой? :) Но, конечно не будет так жестоко! :) Для начала примеры буду приводить используя именно эту среду. ;) Ваш будущий друг. Я всё говорю о редакторе кода и пришла пора с ним по ближе познакомится. :) Откройте Дельфи, или, если она открыта, закройте проект (File->Close All). Теперь создадим проект консольного приложения. File->New->Other... и из списка выберите Console Application. Нажимаем OK. Сразу сохраните проект. Заметьте, что у консольного приложения в проекте находится только один из 3 главных файлов (*.dpr)! А другие и не нужны, поскольку у нас нету формы. Перед вами должно появится окно редактора кода со странными строчками: program Project2; {$APPTYPE CONSOLE} uses SysUtils; begin { TODO -oUser -cConsole Main : Insert code here } end. И на самом деле половина строчек не нужна! :) Первая строчка - имя проекта. Теперь стерайте ненужные строчки, чтобы остались только эти: {$APPTYPE CONSOLE} begin end. Сократилась программа? :) Ну, теперь можно начинать объяснения. :) Первая строчка определяет тип приложения (сокращение от Application Type - Console). В OpenGL проектах она нам будет не нужна, но сейчас без неё программа просто не будет работать! :) begin и end. - логические скобки, т.е. блок программы, в котором будут выполнятся разные действия. Слово begin открывает скобки, а end. - закрывает. Не забудьте поставить точку в конце! "Hello, World!" Пора сделать первую консольную программу. Между командными скобками вставьте следующий код: Write('Hello, World!'); Эта команда выведет на экран надпись Hello, World!. В конце каждой команды (begin - не команда) должна стоять точка с запятой (называемый пустой оператор). Вывод строки осуществляет команда (функция) Write() (от ангийского - писать). В скобках указывается аргумент, требуемый для этой команды. А точнее - строка, выводимая на экран. Строки записываются между одинарными кавычками (апострофами). Если надо написать "пустую" строку, будем соответственно делать так: Write(''); или Write; Никогда не забывайте пустых операторов! Запустите приложение (F9). И что увидели? Почему-то мне кажется, что ничего! :) Может где нибудь ошибка? На самом деле с программой всё в порядке! Она включилась, вывела на экран надпись и закрылась. Так и должно быть. Но от такой программы никакого толку нету. Зачем всё это писать, чтобы ничего не увидеть? :) И действительно - незачем! :) Значит надо как нибудь программу задержать. После функции Write вставьте следущюю строчку: ReadLn; Эта строчка заставит программу задержаться. Она преднозначена для получения данных с клавиатуры (сокращение от английского Read Line). Данные считаются полученными, когда пользователь нажмёт клавишу ENTER. Теперь ваша программа выглядит так: {&APPTYPE CONSOLE} begin Write('Hello, World!'); ReadLn; end. Запустите программу. Теперь всё в порядке? :) Чтобы выйти из программы и вернутся в Дельфи, нажмите ENTER. Эта была ваша первая консольная программа. :) Стиль записи. Эту программу можно записать и так: begin write('Hello, World');readln;end. Ошибки не будет. Код короче, но выглядит ужасно! Каждый себя уважающий программист каждую функцию будет начинать с новой строки. :) Вы же не будете писать письма снизу вверх? :) Но такая запись будет не правильной: begin Write('Hello, World!'); ReadLn; end. Строка не может быть разделена! Попробуйте запустить такую программу. Появится кое что ужасное! :) Смотреть Ужасное - это только на первый взгляд. На самом деле Дельфи сообщает нам об ошибке. Выделенная строка - та строка, в которой находится ошибка, описанная внизу. В этом случае - Unterminated string. Это означает незаконченую строку. В строчке Write('Hello, нету знака, который заканчивает строку Hello,. Теперь выберите вторую ошибку из списка. Два раза щёлкните на ней. Красным цветом пометится следущая строка. Ошибка гласит: ',' or ')' expected, but 'World' found. Это значит, что после первой строки надо поставить один из данных знаков. Только ничего не ставьте! :) Лучше переключитесь к следущей ошибке. Она говорит, что перед функцией ReadLn не хватает точки с запятой. А почему выделилась именно эта строка? Потому, что выделяется строка ПЕРЕД которой надо ставить точку с запятой. Такая запись будет правильной: begin Write('Hello, World!') ; ReadLn ;end. Можете запустить программу и проверить, если не верите. :) Все ошибки должны исчезнуть. Просто, не так ли? :) Если у вас хорошо, или не плохо развита логика, то вы заметите, что чем дальше - тем легче, потому что появятся новые, более удобные способы решения задачь. Я это давно заметил. :) А чтобы развивать логику нужна практика! И именно по этому я буду вам иногда давать разные задания! Так вот. :) Задание #1 так сказать. :) Напишите текст, несколько раз используя функцию Write(). А потом замените её на WriteLn() и решите когда удобнее использовать одну, или другую функцию. На сегодня хватит. :) |
2005-09-29 |
Автор, ведущий и дизайнер рассылки:
Евгений Нарышкин (spider3d@yandex.ru)
OpenGL для начинающих (under construction): http://spider3d.narod.ru/ |