Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Устранение ошибок компиляции в программе на FreePascal для расчета штрафов

Delphi , Синтаксис , Ошибки и Исключения

Приветствую! В данной статье мы рассмотрим типичную проблему, с которой могут столкнуться разработчики при работе с FreePascal – ошибки компиляции. Мы шаг за шагом разберемся с примером, который вы, вероятно, встречали в учебных материалах по Object Pascal и Delphi.

Описание проблемы

Пользователь столкнулся с ошибками компиляции в программе на FreePascal, предназначенной для расчета штрафов за нарушения правил дорожного движения. Код, представленный в вопросе, содержит несколько критических ошибок, в том числе синтаксические, которые приводят к остановке компиляции. Ошибка начинается с линейки 39 и связана с неверным использованием конструкции on.

Контекст вопроса

Вот исходный код программы, который вызывает ошибки:

program TrafficFine;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes,SysUtils;
var
    userInput : Char;
    Fine      : Integer;
    TotalFine : Integer;
    DaysPassed: Integer;
    FineType  : Integer;
begin
    userInput := 'y';
    while (userInput = 'Y') or (userInput = 'y') do
    begin
        writeln('Enter type of fine:');
        // ...
        try
            write('Enter value: ');
            readln(FineType);
            if(FineType < 0) or (FineType > 3) then
                raise exception.Create('Fine type outside of range.');
            case FineType of
            1:  Fine:= 500;
            2:  Fine:= 1000;
            3:  Fine:= 2000;
            // Ошибка: конструкция case не закрыта
            except
            on e: exception do begin
                Writeln('Error: '+e.Message);
                continue;
            end;
            // ...
    end.
    // ...
end.

Анализ ошибок

Ошибки компиляции связаны с неправильным использованием конструкций case и except. В частности, в коде отсутствуют необходимые директивы end для закрытия блоков case и цикла begin...end.

Подтвержденный ответ

Для исправления ошибок в вашем коде необходимо добавить закрывающие директивы end для блоков case и цикла:

program TrafficFine;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes,SysUtils;
var
    userInput : Char;
    Fine      : Integer;
    TotalFine : Integer;
    DaysPassed: Integer;
    FineType  : Integer;
begin
    userInput := 'y';
    while (userInput = 'Y') or (userInput = 'y') do
    begin
        writeln('Enter type of fine:');
        // ...
        try
            write('Enter value: ');
            readln(FineType);
            if(FineType < 0) or (FineType > 3) then
                raise exception.Create('Fine type outside of range.');
            case FineType of
            1:  Fine:= 500;
            2:  Fine:= 1000;
            3:  Fine:= 2000;
            end; // Добавили end для закрытия блока case
            except
            on E: Exception do begin
                Writeln('Error: '+E.Message);
                continue;
            end;
        end; // Добавили end для закрытия блока try
        // ...
    end; // Добавили end для закрытия цикла
    // ...
end.

Альтернативный ответ

В дополнение к исправлению ошибок, вы можете также добавить проверку корректности ввода пользователя на предмет чисел. Например, использовать функцию TryStrToInt из SysUtils для преобразования введенной строки в целое число и обработку возможных ошибок.

Выводы

В процессе разработки программ на FreePascal важно внимательно следить за синтаксисом языка. Небольшие ошибки, такие как пропущенные директивы end, могут привести к серьезным проблемам на этапе компиляции. Использование правил форматирования кода и регулярные ревью могут помочь избежать подобных ошибок.

Надеемся, что данная статья помогла вам устранить ошибки в вашем коде и вы сможете продолжить разработку программы для расчета штрафов. Удачи в изучении Object Pascal и Delphi!

Создано по материалам из источника по ссылке.

Помощь в устранении синтаксических ошибок компиляции программы на FreePascal для расчета штрафов.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Ошибки и Исключения ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 12:55:14/0.0052211284637451/1