Как сделать из программы паскаль приложение
Многие из нас писали программы на Паскале задолго до того, как вошли в моду Графический интерфейс пользователя (GUI) и Интегрированные среды разработки (IDE). Многие другие являются новичками в программировании на Pascal, и им необходимо уметь опробовать основные инструменты языка. Третьим нужны консольные приложения или приложения текстового режима для выполнения сложных задач управления системой.
Программирование в консольном режиме без Lazarus
Хотя многие предпочитают использовать Lazarus IDE для написания программ в режиме консоли, вы также можете написать их с помощью любого текстового редактора и скомпилировать их самостоятельно, вызвав компилятор FPC, например так для программы в example.pas:
Также доступен текстовый режим IDE fp (немного похожий на старый Turbo Pascal).В следующих разделах мы сосредоточимся на программировании с помощью Lazarus.
Программирование в консольном режиме с помощью Lazarus
Lazarus предоставляет идеальную среду для изучения Паскаля и разработки программ в текстовом режиме. Можно использовать все функции интегрированной среды разработки, включая редактор исходного кода с ее подсветкой синтаксиса, доступом к библиотекам, сложными инструментамиы поиска и завершения кода, а также проверкой синтаксиса. Если вам не нужна Form с ее визуальными компонентами, можно и без нее, но редактор исходного кода Lazarus по-прежнему остается отличной средой для разработки программ. Вы можете компилировать и запускать свою программу во время разработки, не выходя из редактора.
Чтобы запустить программу в режиме консоли, перейдите в главное меню и выберите Project -> New Project(Проект - новый проект), а затем выберите Program(Программа) или Console Application(Консольное приложение). Среда IDE не будет генерировать все дополнительные файлы, связанные с полным графическим приложением, и не откроет окно инспектора объектов, но откроет редактор исходного кода со структурой скелетной программы и будет ожидать ввода вашего программирования.
Примечание: В Windows приложение с графическим интерфейсом пользователя не имеет консоли и, следовательно, не может выполнить writeln или readln. Вы получите ошибку File not open(Файл не открыт). Снимите галочку в разделе Project Options / Compiler Options / Linking / Target specific options / Win32 GUI application(Параметры проекта / Параметры компилятора / Связывание / Частные параметры цели / Приложение Win32 GUI), чтобы создать консольное приложение. Начиная с Lazarus IDE 1.4 она находится в разделе Project(menu) / Project Options / Compiler Options / Config and Target / Target specific options / Win32 GUI application(Проект (меню) / Параметры проекта / Параметры компилятора / Настройка и целевая платформа / Частные параметры цели / Приложение Win32 GUI).
Примечание: Lazarus имеет некоторые функции для программ командной строки, такие как copyfile. Чтобы использовать их, добавьте требование к проекту для LazUtils (Project / Project Inspector / Required Packages --> "Add" --> New Requirement --> choose "LazUtils" --> OK), которое не будет задействовать весь LCL. Затем добавьте соответствующий модуль в раздел uses.
Тип проекта: Console Application (Консольное приложение)
Выбор этого типа проекта в Lazarus создает программу с новым классом, производным от TCustomApplication. TCustomApplication предоставляет много всяких штучек и упрощает программирование утилит командной строки. Например, проверка параметров командной строки, написание справки, проверка переменных окружения и обработка исключений. Все программы LCL используют это автоматически.
Тип проекта: Program (Программа)
В качестве демо мы напишем очень минималистичную программу на Паскале. В среде IDE выберите тип проекта Program(Программа), и пусть среда IDE вам немного поможет. Например, когда вы добавляете еще один модуль, IDE автоматически добавит имя модуля в раздел программы uses. Это поведение определяется в параметрах проекта. Таким образом, вы можете переключаться между 'Program'(Программой) и 'Custom Program'(Пользовательской программой) в любое время.
Пример для начинающих:
Pascal scripts
Кроме того, можно писать сценарии, которые динамически компилируются с помощью InstantFPC, кроссплатформенного решения для запуска (небольших) программ Pascal в виде сценариев. Шебанг
позволяет запускать скрипт как отдельную программу.
Примечание: Хотя он используется для запуска сценариев Pascal, InstantFPC использует обычный Object Pascal, а не язык сценариев PascalScript. Таким образом, "PascalScript" и Pascal script - это не одно и то же.
Запуск программы
Компиляция
Если вы еще не сохранили программу, то среда IDE поместит ее во «временный» каталог (например, /tmp в Linux, C:\temp в Windows, см. Environment Options / Files / Directory (Параметры среды / Файлы / Каталог) для собранных тестовых проектов).
Если вы уже сохранили проект, значит, программа была создана в том же каталоге, где вы сохранили файл project1.lpi.
Запуск в консоли
Вы можете запустить программу, перейдя в окно консоли (терминала), затем с помощью cd перейдя в каталог и введя имя программы. В Unix/Linux, если она находится в текущем каталоге, вам придется начать с ./ , поскольку программа, вероятно, не будет найдена в PATH.
Пример для Linux/Unix, где программа хранится в /tmp:
Однако может быть очень неудобно продолжать переходить из редактора Lazarus в окно терминала и обратно. К счастью, есть механизм, позволяющий открывать окно терминала из среды Lazarus.
Запуск в IDE
Во внутренней консоли: показывается в окне вывода терминала.
При перенаправлении вывода.
В главном меню выберите Run -> Run Parameters(Выполнить -> Параметры запуска), затем установите флажок "Use launching application"(Использовать запускаемое приложение). В первый раз, когда вы сделаете это и попробуете последовательность Compile / Run (Собрать / Запустить), вы, вероятно, получите отлуп:
'xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied'.
Если это произошло, вам необходимо изменить права доступа к соответствующему файлу (например, с помощью chmod +x <имя файла> или с помощью утилиты Windows для изменения разрешений); возможно, вам придется сделать это как root. После этого каждый раз, когда вы будете запускать свою программу, будет появляться окно консоли, в котором будут отображаться все ваши текстовые операции ввода-вывода (readln, Writeln и т. Д.).
К сожалению, этот метод не позволяет использовать встроенный отладчик.
Запуск в IDE с перенаправлением вывода
Затем файл output.txt можно просмотреть с помощью команды 'tail -f output.txt' или просмотреть с помощью редактора, если 'tail' недоступен в вашей ОС.
В качестве альтернативы, используя Lazarus 0.9.31 или выше (только в Linux): в меню "View"(Вид) в разделе "Debug Windows"(Отладка Windows) есть запись для "console output"(консольный вывод) для просмотра стандартного вывода.
Unicode (UTF8) вывод
Если вы хотите, чтобы ваша программа в режиме консоли отображала вывод Unicode (UTF8) в Windows Vista и более поздних версиях (а также, возможно, в более ранних версиях), вы можете использовать команду SetConsoleOutputCP для задания консоли набор символов UTF8.
Примечание: вам нужно будет убедиться, что шрифт консоли может отображать буквы, которые вы хотите вывести (например, греческий, кириллица, корейский).
Примечание: вам нужно будет включить модуль Windows.
См. Поддержка Unicode LCL для получения более подробной информации о поддержке Unicode в Lazarus и FPC.
Примеры
Вы можете использовать редактор Lazarus, чтобы опробовать все примеры из стандартных учебников Паскаля, или можете написать свой собственный. Некоторые из наиболее полезных процедур - это процедуры для выполнения системных команд или для запуска других программ (написанных на Паскале, C или Perl, либо в сценариях оболочки или пакетных сценариях).
Выполнение команд оболочки
Пример: обновить FPC и Lazarus
Пример: корректировка fpc и lazarus
Могут выполняться более сложные команды. Например, после посещения хранилища SVN с новейшими версиями FPC и Lazarus (см. buildfaq) можно иметь исходные версии FPC и Lazarus новейшими, путем взятия из хранилища SVN следующей последовательностью вызовов:
Обратите внимание, что выдача команды
не работает, потому что после каждого вызова функции fpsystem() выполнение программы возвращается в каталог, в котором она была запущена; поэтому нам нужно включить несколько операторов в каждую строку в наши вызовы оболочки через fpsystem(). [Скорее так: он всегда начинается.]
Необязательно вводить каждую команду как отдельную строку Паскаля; можно создать файл сценария bash следующим образом (из buildfaq):
Назовите файл updatelaz.sh, а затем вызовите его из программы на Паскале для его непосредственного выполнения вместо использования bash следующим образом:
Примечание для пользователей Windows
Традиционно при написании консольных программ в Windows используется кодировка cp866. Если не принять специальных мер, то при написании консольной программы в IDE в консоли вместо русских букв будут выводиться кракозябры. Чтобы получился нормальный русский текст, в окне кода программы нужно нажать правую кнопку мыши и выбрать в контекстном меню "Параметры файла -> Кодировка -> CP866".
1. Загружаем программу PascalGUI себе на смартфон, в гугл плей оно платное поэтому скачиваем отсюда .
2. В нем мы пишем программу, либо вставляем имеющийся код.
3. Далее удерживаем кнопку "Compile", если в программе нет ошибок, то откроются настройки компиляции.
4. В первой строке вводим путь к конечному apk приложению.
5. Во второй название компилируемых пакетов (можно оставить по умолчанию нам они не понадобятся).
6. В третьей название нашей программы.
7. И в четвертой по желанию указываем путь к png картинке которая будет иконкой приложения.
8. Жмакаем Ok и идем в проводник смартфона, в указаной папке вы найдете скомпилированное приложение, его останется только установить и оно появится на рабочем столе.
Таким образом можно получить несложное андроид-приложение на паскале!
Я просто оставлю это здесь.
Бля помогите у меня при нажатии на "Compile" тупо выдает "Cannot Link Executable.
Помогите, что делать?!
Это, конечно, можно, но зачем? Есть же Java
Блять, мой родной Паскаль. Как он меня в универе своими repeat-until заебал, так ещё и тут. А так - охуенный язык. После него приложения на Дельфи писались на одном дыхании.
Добавлю и я свои пять копеек в образование. Есть замечательный канал преподавателя информатики и программирования Тимофея Хирьянова, который ведёт лекции и обучению по С++ и Python. Порекомендую поучиться у него многим преподавателем данного направления.
Нейронные сети. Формулы обратного распространения
Представляем заключительную лекцию из курса по нейронным сетям от 3blue1brown. В этой лекции речь пойдет о формулах обратного распространения. Одной из важных тем, которая позволит разобраться с основными моментами дифференцирования сложных функций в контексте сетей.
Благодарим за создание выпуска:
Переводчика – Федора Труфанова;
Редактора – Михаила Коротеева;
Диктора – Никифора Стасова;
Монтажера – Олега Жданова
Нейронные сети. Обратное распространение ошибки
Привет, Лига образования!
Мы продолжаем переводить легендарный курс по нейросетям от 3blue1brown.
В предыдущей лекции мы узнали о градиентном спуске. Сегодня речь пойдет о методе обратного распространения — главном алгоритме обучения нейронных сетей.
Благодарим за создание выпуска:
Редактора – Михаила Коротеева;
Диктора – Никифора Стасова;
Монтажера – Олега Жданова
И бонус в комментариях, английский!
Нейронные сети. Градиентный спуск: как учатся нейронные сети
Обучение — сложный процесс не только для человека, но и для сущностей, порожденных разумом человека.
Мы подготовили долгожданное продолжение лекций по нейросетям. Градиентный спуск: как учатся нейронные сети.
Благодарим за участие в выпуске:
Редакторов – Дмитрия Титова, Михаила Коротеева, Дмитрия Мирошниченко;
Корректора – Дмитрия Мирошниченко;
Дикторов – Никифора Стасова, Дарью Яговкину;
Монтажера – Олега Жданова.
«Даром преподаватели…» или с помощью моделирования восполняем пробелы в знании азов электроники
В минувшем году у меня наступило осознание того, что слова популярной песни Аллы Борисовны относятся ко мне.
Оказалось, что в среде разработки программы для контроллера есть режим симуляции схемы, в котором можно потыкать все эти элементы, задать значения на входах и посмотреть, что будет на выходе. Это очень сильно облегчает восприятие учебного материала.
Думаю, что программа изначально не задумывалась разработчиками для обучения азам электроники. Некоторые моменты могут быть неочевидными, поэтому я решил поделиться с вами парой примеров такого необычного её применения.
Для начала нам понадобится сама среда разработки CannyLab. Её можно бесплатно скачать на сайте разработчиков. Среда разработки представляет собой .zip архив. Её не нужно устанавливать, достаточно просто распаковать архив и запустить файл cannylab.exe. Права администратора не требуются, а значит программу можно использовать, например на компьютерах с ограниченными правами пользователя. На момент написания статьи актуальная версия среды разработки была 1.41.
Прежде, чем мы перейдем к описанию программы и примеров работы, я должен предупредить, что не являюсь в данном вопросе специалистом и просто делюсь своим небольшим опытом . Вдруг кому будет польза.
Начнем с простейшего. Перетащим, какой-нибудь элемент, запустим симулятор, введём значения на входы и посмотрим, что будет на выходе.
Запустите программу, выберите любой контроллер (я выбирал для своего Canny 3 tiny, но думаю это не принципиально)
Нажмите один раз левой кнопкой мыши (ЛКМ) на зеленые квадратики и растяните линию для вывода (синюю) потом нажмите 2 раза ЛКМ, чтобы линия зафиксировалась. Проделайте так со всеми входами и выходами.
Нажмите на иконку в виде красного жука, после чего откроется симулятор
Обратите внимание, что ввести значение можно в разных форматах (символьном, бинарном, шестнадцатеричном), но мы выберем привычный нам десятеричный формат и введем любое значение.
Повторим туже самую операцию для второго входа, запустим симуляцию и посмотрим, что же получилось на выходе. Для запуска симуляции нажмите на кнопку в форме треугольника (как на картинке).
Как видим, на выходе вполне ожидаемо получается единица.
Можно построить и более сложную схему.
Давайте попробуем сделать пример со счетчиком и убедимся, что его показатели изменяются в режиме реального времени.
Следующий импульс пойдет, когда мы обнулим сигнал на входе детектора, после чего снова подадим любое значение больше нуля
Ну и напоследок давайте разберем примеры с изменением представлением чисел в разных форматах записи. До этого мы вводили десятичные значения, но можем легко переключиться и в бинарный формат.
Кстати, с помощью Wine среду разработки Cannylab, можно запустить и в ОС Linux. Эмулятор при этом вроде работает без сбоев.
Как я уже указал в начале статьи, Cannylab вряд ли предусматривался для обучения азам электроники (и информатики), поэтому набор элементов не так велик, как хотелось бы.
Наверняка есть какие-то opensource инструменты, выполняющие похожий функционал, но мне попался именно этот.
Программа бесплатная, мало весит, не требует установки, быстро загружается, а главное позволяет побаловаться с основными видами триггеров. Как раз то, что мне было нужно.
Возможно, Cannylab пригодиться небогатым учебных заведениям и кружкам энтузиастов, как платформа для организации лабораторных и практических занятий. Это всяко лучше, чем просто что-то чертить в тетрадке (как было в годы моей юности).
Для связи файла в коде программы и действительного файла на внешнем носителе используется процедура ASSIGN :
Текстовые файлы в паскале: процедуры работы
Возможные расширения файлов:
*.txt, *.log,
*.htm, *.html
Метод работы с текстовым файлом в Паскале предусматривает лишь последовательный доступ к каждой строке файла. Это означает, что начинать всегда возможно только с первой строки, затем проходя по каждой строке, дойти постепенно до необходимой. Т.е. можно сказать, что чтение (или запись) из файла (в файл) ведутся байт за байтом от начала к концу.
Предусмотрены два режима работы: режим для записи в файл информации и для чтения ее из файла. Одновременная запись и чтение запрещены.
Открытие файла
Допустим, мы в программе описали переменную для работы с текстовым файлом:
Рассмотрим дальнейшую последовательность работы с ним, и рассмотрим процедуры, необходимые для работы с текстовым файлом в Паскале:
процедура открытия существующего файла для чтения при последовательном доступе:
процедура открытия создаваемого файла для записи в него информации; если файл с таким именем уже существует, то информация в нем стирается:
процедура добавления в конец:
- При открытии курсор устанавливается в начало файла.
Чтение из файла
Read (f, список переменных); ReadLn (f, список переменных);
Отличие ReadLn от Read в том, что при использовании readln после прочтения данных пропускаются все оставшиеся символы в данной строке, включая метку конца строки.
- чтение осуществляется с той позиции, где в данный момент стоит курсор;
- после чтения курсор сдвигается к первому непрочитанному символу.
close ( f ); reset ( f );
Запись в текстовый файл
Write (f, список переменных); WriteLn (f, список переменных);
Процедуры работы с файлом и закрытие файла
Нахождение конца файла:
Логическая функция, возвращающая True, если достигнут конец файла.
Нахождение конца строки:
Логическая функция, возвращающая True, если достигнут конец строки.
Удалить файл в Паскале
Переименование файла в Паскале
rename(переменная_файла,'новое имя файла');
Закрытие:
Важно: Таким образом, работа с файлом осуществляется через три основных шага:Рассмотрим пример работы с файлами в паскале:
Пример 1: В файле text.txt записаны строки. Вывести первую и третью из них на экран.(предварительно создать text.txt с тремя строками)
var filetext: text; a,b,c:string; begin assign(filetext,'c:\text.txt'); reset(filetext); readln(filetext,a); readln(filetext,b); readln(filetext,c); close(filetext); writeln(a); writeln(c); end.
Пример 2: Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символов не учитывать).* Из задачника М. Э. Абрамян (Text4)
var F: Text; N,K:integer; Name:String; C:Char; begin Assign(F,'c:\text.txt'); Reset(F); N:=0; K:=0; While not eof(F) do begin inc(N); While not eoln(f) do begin inc(K); Read(F,C); end; Readln(F); end; Close(F); Writeln(N,' ',K); end.
Пример 3:Считать из файла input.txt числа (числа записаны в столбик). Затем записать их произведение в файл output.txt
var p, x: integer; f: text; begin assign(f, 'input.txt'); reset(f); p := 1; while not eof(f) do begin readln(f, x); p := p * x; end; close(f); assign(f, 'output.txt'); rewrite(f); writeln(f, 'Произведение чисел ', p); close(f); end.
var filetext: text; a:string; i:integer; begin assign(filetext,'c:\text.txt'); rewrite(filetext); for i:=1 to 10 do . reset(filetext); for i:=1 to 10 do begin . . end; close(filetext); end.
pascal file text2. Даны целые положительные числа N и K. Создать текстовый файл и записать в него N строк, каждая из которых состоит из K символов «*» (звездочка).* Из задачника М. Э. Абрамян (Text1)
pascal file text3. Дана строка S и текстовый файл. Добавить строку S в конец файла.* Из задачника М. Э. Абрамян (Text5)
Пример 4: Дана строка S и текстовый файл. Добавить строку S в начало файла.* Из задачника М. Э. Абрамян (Text7)
var F_in,F_out: Text; Name,S: String; begin Write('S: '); Readln(S); Assign(F_in,'c:\text.txt'); Reset(F_in); Assign(F_out,'c:\text1.txt'); Rewrite(F_out); Writeln(F_out,S); While not eof(F_in) do begin Readln(F_in,S); Writeln(F_out,S); end; Close(F_in); Close(F_out); Erase(F_in); Rename(F_out,'c:\text.txt'); end.
pascal file text4. Дано целое число K и текстовый файл. В данном файле вставить пустую строку перед строкой с номером K . Если строки с таким номером нет, то оставить файл без изменений.Для решения задачи можно использовать дополнительный временный файл.
* Из задачника М. Э. Абрамян (Text9)
Пример 5: Дано целое число K и текстовый файл. Удалить из файла строку с номером K . Если строки с таким номером нет, то оставить файл без изменений.* Из задачника М. Э. Абрамян (Text15)
var F_in,F_out: Text; Name,line: string; K,i:integer; begin Write('K: '); Readln(K); Assign(F_in,'c:\text.txt'); Assign(F_out,'c:\text1.txt'); Reset(F_in); Rewrite(F_out); i:=0; While not eof(F_in) do begin Readln(F_in,line); inc(i); if i<>K then Writeln(F_out,line); end; Close(F_in); Close(F_out); Erase(F_in); Rename(F_out,'c:\text.txt'); end.
Пример 6: Дан текстовый файл F1 с набором нулей и единиц. Необходимо заменить все вхождения сочетаний 101 на 000 . Скорректированные записи поместить в файл F2 .var f1,f2: text; pole:string; pz:integer; begin assign(f1,'1.txt'); assign(f2,'2.txt'); reset(f1); rewrite(f2); while not eof(f1) do begin readln(f1, pole); while pos('101',pole)<>0 do begin pz:=pos('101',pole); delete(pole,pz,3); insert('000',pole,pz); end; writeln(f2,pole) end; close(f1); close(f2); end.
Работа с данными из файла как с массивом
- для сортировки необходим массив, для того чтобы одновременно работать со всеми числами;
- неизвестно общее количество чисел.
- объявляем массив для 100 элементов;
- открываем файл на чтение, просчитываем количество чисел, заполняя массив, сохраняем количество в N;
- сортируем N элементов массива;
- записываем результат в файл.
* Из задачника М. Э. Абрамян (Text16)
А теперь вернемся к олимпиадному заданию по Паскалю, частично решенному на одном из предыдущих заданиях:
p.in | p.out |
---|---|
3 hello earth | khoor hduwk |
var a:char; i,n,k:byte; s,s1:string; f_in,f_out:text; begin Assign(F_in,'z:\p.in'); Assign(F_out,'z:\p.out'); Reset(F_in); Rewrite(F_out); s1:=''; readln(f_in,k); readln(f_in,s); for i:=1 to length(s) do begin n:=ord(s[i]); if n<>32 then n:=n+3; if . then . ; if . then . ; if . then . ; a:=chr(. ); s1:=. ; end; writeln(s1); writeln(f_out,s1); close(f_in); close(f_out) end.
var a:char; i,n,k:byte; s,s1:string; f_in,f_out:text; begin Assign(F_in,'z:\p.in'); Assign(F_out,'z:\p.out'); Reset(F_in); Rewrite(F_out); s1:=''; readln(f_in,k); readln(f_in,s); for i:=1 to length(s) do begin n:=ord(. ); if n<>32 then n:=n+3; if n=123 then n:=97; if n=124 then n:=98; if n=125 then n:=99; a:=chr(n); s1:=s1+a; end; writeln(s1); writeln(f_out,s1); close(f_in); close(f_out) end.
полное решение var s, s1: string; i, j, a, n, k, b: integer; begin n := 97; s1 := ''; readln(s); readln(k); for i := 1 to length(s) do begin if s[i] <> ' ' then begin a := ord(s[i]); if a > 122 - k then for j :=123 - k to 122 do begin b:=122-j; if a = j then begin a := n+k-b-1; inc(n); end; end else a := a + k; s1 := s1 + chr(a) end else s1 := s1 + ' ' end; writeln(s1)end. --> pascal file text7. Пять делителей.Имя входного файла: z3.in
Имя выходного файла: z3.out
Многие из нас писали программы на Паскале задолго до того, как вошли в моду Графический интерфейс пользователя (GUI) и Интегрированные среды разработки (IDE). Многие другие являются новичками в программировании на Pascal, и им необходимо уметь опробовать основные инструменты языка. Третьим нужны консольные приложения или приложения текстового режима для выполнения сложных задач управления системой.
Программирование в консольном режиме без Lazarus
Хотя многие предпочитают использовать Lazarus IDE для написания программ в режиме консоли, вы также можете написать их с помощью любого текстового редактора и скомпилировать их самостоятельно, вызвав компилятор FPC, например так для программы в example.pas:
Также доступен текстовый режим IDE fp (немного похожий на старый Turbo Pascal).В следующих разделах мы сосредоточимся на программировании с помощью Lazarus.
Программирование в консольном режиме с помощью Lazarus
Lazarus предоставляет идеальную среду для изучения Паскаля и разработки программ в текстовом режиме. Можно использовать все функции интегрированной среды разработки, включая редактор исходного кода с ее подсветкой синтаксиса, доступом к библиотекам, сложными инструментамиы поиска и завершения кода, а также проверкой синтаксиса. Если вам не нужна Form с ее визуальными компонентами, можно и без нее, но редактор исходного кода Lazarus по-прежнему остается отличной средой для разработки программ. Вы можете компилировать и запускать свою программу во время разработки, не выходя из редактора.
Чтобы запустить программу в режиме консоли, перейдите в главное меню и выберите Project -> New Project(Проект - новый проект), а затем выберите Program(Программа) или Console Application(Консольное приложение). Среда IDE не будет генерировать все дополнительные файлы, связанные с полным графическим приложением, и не откроет окно инспектора объектов, но откроет редактор исходного кода со структурой скелетной программы и будет ожидать ввода вашего программирования.
Примечание: В Windows приложение с графическим интерфейсом пользователя не имеет консоли и, следовательно, не может выполнить writeln или readln. Вы получите ошибку File not open(Файл не открыт). Снимите галочку в разделе Project Options / Compiler Options / Linking / Target specific options / Win32 GUI application(Параметры проекта / Параметры компилятора / Связывание / Частные параметры цели / Приложение Win32 GUI), чтобы создать консольное приложение. Начиная с Lazarus IDE 1.4 она находится в разделе Project(menu) / Project Options / Compiler Options / Config and Target / Target specific options / Win32 GUI application(Проект (меню) / Параметры проекта / Параметры компилятора / Настройка и целевая платформа / Частные параметры цели / Приложение Win32 GUI).
Примечание: Lazarus имеет некоторые функции для программ командной строки, такие как copyfile. Чтобы использовать их, добавьте требование к проекту для LazUtils (Project / Project Inspector / Required Packages --> "Add" --> New Requirement --> choose "LazUtils" --> OK), которое не будет задействовать весь LCL. Затем добавьте соответствующий модуль в раздел uses.
Тип проекта: Console Application (Консольное приложение)
Выбор этого типа проекта в Lazarus создает программу с новым классом, производным от TCustomApplication. TCustomApplication предоставляет много всяких штучек и упрощает программирование утилит командной строки. Например, проверка параметров командной строки, написание справки, проверка переменных окружения и обработка исключений. Все программы LCL используют это автоматически.
Тип проекта: Program (Программа)
В качестве демо мы напишем очень минималистичную программу на Паскале. В среде IDE выберите тип проекта Program(Программа), и пусть среда IDE вам немного поможет. Например, когда вы добавляете еще один модуль, IDE автоматически добавит имя модуля в раздел программы uses. Это поведение определяется в параметрах проекта. Таким образом, вы можете переключаться между 'Program'(Программой) и 'Custom Program'(Пользовательской программой) в любое время.
Пример для начинающих:
Pascal scripts
Кроме того, можно писать сценарии, которые динамически компилируются с помощью InstantFPC, кроссплатформенного решения для запуска (небольших) программ Pascal в виде сценариев. Шебанг
позволяет запускать скрипт как отдельную программу.
Примечание: Хотя он используется для запуска сценариев Pascal, InstantFPC использует обычный Object Pascal, а не язык сценариев PascalScript. Таким образом, "PascalScript" и Pascal script - это не одно и то же.
Запуск программы
Компиляция
Если вы еще не сохранили программу, то среда IDE поместит ее во «временный» каталог (например, /tmp в Linux, C:\temp в Windows, см. Environment Options / Files / Directory (Параметры среды / Файлы / Каталог) для собранных тестовых проектов).
Если вы уже сохранили проект, значит, программа была создана в том же каталоге, где вы сохранили файл project1.lpi.
Запуск в консоли
Вы можете запустить программу, перейдя в окно консоли (терминала), затем с помощью cd перейдя в каталог и введя имя программы. В Unix/Linux, если она находится в текущем каталоге, вам придется начать с ./ , поскольку программа, вероятно, не будет найдена в PATH.
Пример для Linux/Unix, где программа хранится в /tmp:
Однако может быть очень неудобно продолжать переходить из редактора Lazarus в окно терминала и обратно. К счастью, есть механизм, позволяющий открывать окно терминала из среды Lazarus.
Запуск в IDE
Во внутренней консоли: показывается в окне вывода терминала.
При перенаправлении вывода.
В главном меню выберите Run -> Run Parameters(Выполнить -> Параметры запуска), затем установите флажок "Use launching application"(Использовать запускаемое приложение). В первый раз, когда вы сделаете это и попробуете последовательность Compile / Run (Собрать / Запустить), вы, вероятно, получите отлуп:
'xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied'.
Если это произошло, вам необходимо изменить права доступа к соответствующему файлу (например, с помощью chmod +x <имя файла> или с помощью утилиты Windows для изменения разрешений); возможно, вам придется сделать это как root. После этого каждый раз, когда вы будете запускать свою программу, будет появляться окно консоли, в котором будут отображаться все ваши текстовые операции ввода-вывода (readln, Writeln и т. Д.).
К сожалению, этот метод не позволяет использовать встроенный отладчик.
Запуск в IDE с перенаправлением вывода
Затем файл output.txt можно просмотреть с помощью команды 'tail -f output.txt' или просмотреть с помощью редактора, если 'tail' недоступен в вашей ОС.
В качестве альтернативы, используя Lazarus 0.9.31 или выше (только в Linux): в меню "View"(Вид) в разделе "Debug Windows"(Отладка Windows) есть запись для "console output"(консольный вывод) для просмотра стандартного вывода.
Unicode (UTF8) вывод
Если вы хотите, чтобы ваша программа в режиме консоли отображала вывод Unicode (UTF8) в Windows Vista и более поздних версиях (а также, возможно, в более ранних версиях), вы можете использовать команду SetConsoleOutputCP для задания консоли набор символов UTF8.
Примечание: вам нужно будет убедиться, что шрифт консоли может отображать буквы, которые вы хотите вывести (например, греческий, кириллица, корейский).
Примечание: вам нужно будет включить модуль Windows.
См. Поддержка Unicode LCL для получения более подробной информации о поддержке Unicode в Lazarus и FPC.
Примеры
Вы можете использовать редактор Lazarus, чтобы опробовать все примеры из стандартных учебников Паскаля, или можете написать свой собственный. Некоторые из наиболее полезных процедур - это процедуры для выполнения системных команд или для запуска других программ (написанных на Паскале, C или Perl, либо в сценариях оболочки или пакетных сценариях).
Выполнение команд оболочки
Пример: обновить FPC и Lazarus
Пример: корректировка fpc и lazarus
Могут выполняться более сложные команды. Например, после посещения хранилища SVN с новейшими версиями FPC и Lazarus (см. buildfaq) можно иметь исходные версии FPC и Lazarus новейшими, путем взятия из хранилища SVN следующей последовательностью вызовов:
Обратите внимание, что выдача команды
не работает, потому что после каждого вызова функции fpsystem() выполнение программы возвращается в каталог, в котором она была запущена; поэтому нам нужно включить несколько операторов в каждую строку в наши вызовы оболочки через fpsystem(). [Скорее так: он всегда начинается.]
Необязательно вводить каждую команду как отдельную строку Паскаля; можно создать файл сценария bash следующим образом (из buildfaq):
Назовите файл updatelaz.sh, а затем вызовите его из программы на Паскале для его непосредственного выполнения вместо использования bash следующим образом:
Примечание для пользователей Windows
Традиционно при написании консольных программ в Windows используется кодировка cp866. Если не принять специальных мер, то при написании консольной программы в IDE в консоли вместо русских букв будут выводиться кракозябры. Чтобы получился нормальный русский текст, в окне кода программы нужно нажать правую кнопку мыши и выбрать в контекстном меню "Параметры файла -> Кодировка -> CP866".
Читайте также: