В предыдущем уроке рассказывалось об основных инструментах разработки программ в среде Lazarus, этапах создания приложения.
В этом уроке мы создадим свою первую программу, познакомимся с редактором исходного кода, узнаем как компилировать и выполнять программу.
Наша программа будет взаимодействовать с пользователем, Вы сможете поэкспериментировать с нею. Не бойтесь экспериментировать, Вы не сможете сделать что-либо непоправимое. И в то же время истинные и прочные навыки эффективной работы достигаются только путем самостоятельного экспериментирования.
Для создания графического интерфейса Lazarus предоставляет программисту палитру компонентов пользовательского интерфейса. Программисту требуется всего лишь выбрать на палитре нужные компоненты и с помощью мыши перенести их на форму.
После того, как компонент размещен на форме, он становиться объектом, который имеет свои установленные по умолчанию свойства. Эти свойства можно просматривать и изменять с помощью окна Свойства.
В нашей первой программе при создании интерфейса пользователя будем использовать три компонента: TForm (Форма), Label (Надпись) и TButton (Командная кнопка).
Так как мы будем использовать их впервые, давайте познакомимся с ними подробнее. Нам нужно знать основные свойства этих компонентов и их назначение, чтобы можно было их настраивать. Описание свойств этих компонентов можно посмотреть перейдя по ссылкам: Forma (Форма), Label (Надпись), Button (Кнопка). С остальными компонентами графического интерфейса будем знакомиться по мере их использования.
Теперь, когда вы изучили новые компоненты, мы загрузим среду программирования и создадим свой первый проект
Проект «Первая программа»
Задание. Создать проект, который после щелчка на кнопке выводит в поле надписи текст: «Я программирую. »
Создать интерфейс программы по образцу:
Разместить надпись и кнопку на форме и установите значения свойств, перечисленные в таблице. Когда вы это сделаете, форма примет такой вид , как на рисунке.
В следующих заданиях, когда Вы лучше освоите среду Lazarus, примеры форм будут сопровождаться только листингами исходного кода. От Вас ожидается, что вы , глядя на формы и листинги, сами догадаетесь, как должны быть установлены свойства компонентов.
Ход выполнения проекта
-
- Загрузите Lazarus. Создайте новый проект. Для этого:1) Выполнить команду Проект => Создать проект …2)В появившемся диалоговом окне выбрать слово Приложение и нажать кнопку ОК.
2) Не выходя из этого диалогового окна Создать новую папку Primer_1 для файлов вашего проекта (проект будет содержать несколько файлов), открыть ее и щелкнуть по кнопке Сохранить.
Тем самым мы сохраним файл Project1, содержащий сведения о проекте.
Сразу же откроется окно Сохранить Unit1 для сохранения программного кода проекта (файл Unit1.pas), в котором также необходимо щелкнуть по кнопке Сохранить.
Кроме этих двух файлов в папке проекта создается автоматически еще несколько файлов, в том числе – unit. lfm, который представляет собой файл с полными данными о проектировщике формы. Позиция, размер, расположенные компоненты и пр.
Папка проекта должна содержать следующие файлы:
Компонент
Свойство
Значение
Форма примет такой вид, как на рисунке:
Сейчас процедура обработчика события пустая, при нажатии кнопки она ничего не делает.
2) Чтобы процедура выполнила необходимые действия, напишите соответствующий код между операторными скобками begin и end. В нашем случае это оператор присваивания, который изменяет свойство Сaption (текст надписи) объекта Label1 на новое значение:
Вводя код, обратите внимание на подсказку, появившуюся после ввода точки, следующей за label1. Подсказка представляет собой всплывающее меню, в котором перечислены допустимые свойства и методы компонента label1
С помощью мыши вы можете выбрать из списка нужное свойство или метод.
Далее этот файл, в случае успешного создания, запускается на выполнение.
В предыдущем задании новые значения свойств для компонентов, размещенных на форме, были перечислены в таблице.
В следующих заданиях будут даны только текст задания и пример формы. От Вас ожидается, что вы, глядя на форму, сами догадаетесь, как должны быть установлены свойства компонентов.
Задания для самостоятельного выполнения
Задание 3.Создайте приложение, разместите на форме компоненты: Buton1, Edit1 так как показано на образце.
По щелчку на кнопке нужно заменить текст в заголовке окна на текст введенный пользователем в текстовое поле.
Задание 4. Создайте приложение, в результате работы которого при щелчке на кнопке привет в поле надписи выводится приветствие, при щелчке на кнопке Очистить сообщение исчезает.
Задание 5. Создайте приложение, в результате работы которого в поле надписи Label 1 выводится выводиться одно из сообщений, в зависимости от того, на какой кнопке пользователь щелкнул мышью.
Наименование кнопки Отображаемый текст в надписи label1 Форма Заготовка главного окна разрабатываемого приложения Инспектор объектов Окно, предназначенное для редактирования свойств объектов Unit1.pas Файл с программным кодом Проект Группа файлов, относящихся к данному приложению Для объектов на форме установите следующие значения свойств:
Компонент Свойство Значение Label1 Caption Здесь будет выведено сообщение WordWrap True Form1 BorderIcons
biMinimize
biMaximizeFalse
FalseВ этом уроке мы создали свою первую программу в среде Lazarus.
В следующем уроке мы продолжим знакомится с компонентами Lazarus, создадим еще несколько новых проектов.
external sigfpe lazarus что за ошибка
В POSIX-системах, SIGFPE — сигнал, посылаемый процессу, при попытке выполнения ошибочной арифметической операции.
SIGFPE — целочисленная константа, определённая в заголовочном файле signal. h . Символьные имена сигналов используются вместо номеров, так как в разных реализациях номера сигналов могут различаться.
Этимология [ править | править код ]
SIG — общий префикс, сигналов, FPE — аббревиатура англ. floating-point exception — исключение в операции с плавающей запятой. На самом деле, SIGFPE используется и для целочисленной арифметики, название же сохраняется для обеспечения обратной совместимости кода.
Использование [ править | править код ]
SIGFPE может быть послан процессу по ряду причин. Самая распространенная из них — переполнение типа данных в результате неожиданно больших (или малых) значений входных данных и/или ошибки дизайна программы.
SIGFPE может быть перехвачен или проигнорирован. Игнорирование SIGFPE в некоторых случаях может привести к непредсказуемым результатам — программа может зациклиться в попытке выполнить ошибочную операцию. Если SIGFPE не является результатом арифметической операции (а, например, послан с помощью системного вызова kill() ), то такое игнорирование вполне безопасно.
При делении SIGFPE вызывает не только равный нулю делитель — на некоторых платформах (включая x86), целое деление INT_MIN, самого малого (отрицательного) целого числа, на (−1) не может быть выполнено, поскольку положительное число с этим модулем непредставимо (при INT_MIN = (−2147483648), INT_MAX = 2147483647).
У меня возникла проблема в моем проекте Lazarus: каждый раз, когда я хочу использовать функцию, она выдает указанную выше ошибку ( External: SIGSEGV ). Я не знаю, что это значит, но некоторые отладки показали мне, что это код, вызывающий ошибку:
Исключение происходит после i := я + 1; , Я был бы очень благодарен, если бы вы могли мне помочь!
2 ответа
3 Решение kludg [2015-11-28 13:41:00]
Динамические массивы, такие как TStringArray = array of string; основаны на нуле; ваш код использует его как 1-based и повышает нарушение прав доступа.
Вы должны заменить i := 1; по i := 0;
К второй проблеме, это потому, что вы присоединяетесь к индексу i, который в начале — 1, поэтому у вас есть проблема, диапазон массива определяется «длиной — 1», поэтому, если ваша длина равна 1, то ваш диапазон равен 0. Поэтому для решения проблемы в вашем цикле for вы должны поставить Result[i-1] := s; например, вы получаете индекс, который вы действительно хотите.
procedure TForm1.Button1Click(Sender: TObject);
var a, b,c:integer;
begin
a:=5;
b:=-7;
c:=9;if (a>0) then
Label1.caption:=floattostr(sqr(a))
else
Label1.caption:=floattostr(Exp(4*Ln(a)));if (b>0) then
Label2.caption:=floattostr(sqr(b))
else
Label2.caption:=floattostr(Exp(4*Ln(b)));//50строкаif (c>0) then
Label3.caption:=floattostr(sqr(c))
else
Label3.caption:=floattostr(Exp(4*Ln(c)));
end;
end.Источники:https://gospodaretsva. com/urok-2-vasha-pervaya-programma. html
https://window-10.ru/external-sigfpe-lazarus-chto-za-oshibka/