Ошибка e2029 delphi

E2029 Statement expected but 'PROCEDURE' found Delphi Решение и ответ на вопрос 1023753

sterkh

5 / 5 / 8

Регистрация: 06.04.2013

Сообщений: 103

1

30.11.2013, 13:20. Показов 24622. Ответов 5

Метки нет (Все метки)


В общем в delphi я новичок,первый раз использую процедуры и столкнулся с такой проблемой:
E2029 Statement expected but ‘PROCEDURE’ found

хоть убейте не пойму,бегины энды пересчитал,количество сходится,и через некоторое время(не знаю как) первый бегин отделился,и стал использоваться как вложенный

Программа должна найти минимальный элемент,стоящий после первого числа,делящегося на 5,если таких нет,то с начала массива.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const n=10;
var
b,c,d,m,i,min:integer;
a: array [1..n] of integer;
dat,res:textFile;
begin
assignfile(dat,'dat.txt');
assignfile(res,'res.txt');
readln(dat,m);//количество элементов в массиве
 
c:=0;
b:=0;
for i := 1 to m do
begin
readln(dat,a[i]);
if b=0 then
begin
if a[i] mod 5 =0 then
begin
b:=i;//первое число кратное пяти
end;
end;
if a[i]>0 then
begin
c:=i;//последнее положительное число
end;
end;
d:=a[b];
procedure min1;//              тут ошибка
begin
for i := b to c do
if a[i]<d then
begin
min:=a[i]
end;
writeln(res,min);
end;
procedure min2;
begin
for I := 2 to c do
if a[i]<d then
begin
d:=a[i];
end;
writeln(res,min);
end;
if c=0 then//ни одного положительного
begin
writeln(res,'v massive net pologitelnbIx 4isel');
Halt;
end;
if b>c then
begin
writeln(res,'v massive est pologitelnbIe 4isla,no oni naxod9ts9 polse 4isla kratnogo p9ti');
Halt;
end;
if b<=c then
begin
min1;
end;
if b=0 then
begin
min2;
end;
closefile(dat);
closefile(res);
end.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

30.11.2013, 13:20

Ответы с готовыми решениями:

ОШИБКА: E2029 Statement expected but ‘VAR’ found
ЧТО ОН ОТ МЕНЯ ХОЧЕТ:(
program fjhghsrjdtmnf;

{%File ‘Project1.bdsproj’}
{$APPTYPE CONSOLE}

Statement expected but procedure found
Добрый день,помогите разобраться,из-за чего возникает ошибка,в интернете пишут,мол нету end или их…

[Error] Unit6.pas(73): Statement expected but ‘PROCEDURE’ found
Как исправить ошибку?

unit Unit6;

interface

uses
Windows, Messages, SysUtils, Variants,…

Ошибка [Error] Unit5.pas(53): Statement expected but ‘PROCEDURE’ found
unit Unit5;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,…

5

Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32456 / 20948 / 8107

Регистрация: 22.10.2011

Сообщений: 36,218

Записей в блоге: 7

30.11.2013, 13:36

2

А что, процедуры просто так свободно переплетаются с текстом основной программы? Может, их надо описать ДО ТОГО, как начнется основная часть?



1



fatal error

136 / 128 / 29

Регистрация: 10.04.2012

Сообщений: 357

30.11.2013, 13:37

3

Перед 30 строкой не хватает end;
И перед 67 строкой не хватает end;
С логикой разбираться неохото, но компилируется
45 и 47 строка один из end лишний



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32456 / 20948 / 8107

Регистрация: 22.10.2011

Сообщений: 36,218

Записей в блоге: 7

30.11.2013, 13:40

4

Цитата
Сообщение от U_Dimas
Посмотреть сообщение

но компилируется

И чего у тебя компилируется, интересно? Выбрось свой компилятор, если такой бред начинает компилироваться… Еще раз: процедура не может «вплетаться» в основной код просто так. Добавление end перед 30 строкой помогает только если после этого end-а поставить точку, то есть, отсечь всё, что ниже. Это будет не программа, а обрубок…



0



U_Dimas

fatal error

136 / 128 / 29

Регистрация: 10.04.2012

Сообщений: 357

30.11.2013, 13:54

5

Цитата
Сообщение от UI
Посмотреть сообщение

И чего у тебя компилируется, интересно? Выбрось свой компилятор, если такой бред начинает компилироваться… Еще раз: процедура не может «вплетаться» в основной код просто так. Добавление end перед 30 строкой помогает только если после этого end-а поставить точку, то есть, отсечь всё, что ниже. Это будет не программа, а обрубок…

Вот это:
но что хотелось автору и так ли хотелось я не знаю

Возможно нужно сделать вот так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
procedure min1;//              òóò îøèáêà
const n=10;
var
b,c,d,m,i,min:integer;
a: array [1..n] of integer;
dat,res:textFile;
begin
for i := b to c do
if a[i]<d then
begin
min:=a[i]
end;
writeln(res,min);
end;
 
procedure min2;
const n=10;
var
b,c,d,m,i,min:integer;
a: array [1..n] of integer;
dat,res:textFile;
begin
for I := 2 to c do
if a[i]<d then
begin
d:=a[i];
end;
writeln(res,min);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
const n=10;
var
b,c,d,m,i,min:integer;
a: array [1..n] of integer;
dat,res:textFile;
begin
assignfile(dat,'dat.txt');
assignfile(res,'res.txt');
readln(dat,m);//êîëè÷åñòâî ýëåìåíòîâ â ìàññèâå
c:=0;
b:=0;
for i := 1 to m do
begin
readln(dat,a[i]);
if b=0 then
begin
if a[i] mod 5 =0 then
begin
b:=i;//ïåðâîå ÷èñëî êðàòíîå ïÿòè
end;
//end;
if a[i]>0 then
begin
c:=i;//ïîñëåäíåå ïîëîæèòåëüíîå ÷èñëî
end;
//end;
d:=a[b];
end;
if c=0 then//íè îäíîãî ïîëîæèòåëüíîãî
begin
writeln(res,'v massive net pologitelnbIx 4isel');
Halt;
end;
//end;
if b>c then
begin
writeln(res,'v massive est pologitelnbIe 4isla,no oni naxod9ts9 polse 4isla kratnogo p9ti');
Halt;
end;
if b<=c then
begin
min1;
end;
if b=0 then
begin
min2;
end;
closefile(dat);
closefile(res);
end;
end;



0



5 / 5 / 8

Регистрация: 06.04.2013

Сообщений: 103

30.11.2013, 14:07

 [ТС]

6

Цитата
Сообщение от UI
Посмотреть сообщение

А что, процедуры просто так свободно переплетаются с текстом основной программы? Может, их надо описать ДО ТОГО, как начнется основная часть?

первый раз использую их,не знал)
стало всё ясно

Добавлено через 11 минут
ещё вопрос:первый begin стал работать как вложенный,как это исправить?



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

30.11.2013, 14:07

Помогаю со студенческими работами здесь

Ошибка [Error] Unit1.pas(531): Statement expected but ‘PROCEDURE’ found
Привет, у меня вылазит ошибка
Unit1.pas(531): Statement expected but ‘PROCEDURE’ found

Ошибка [Error] Uchen.pas(84): Statement expected but ‘PROCEDURE’ found -Delphi
unit Uchen;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,…

Ошибка: «Statement expected, but ‘PROCEDURE’ found»
Пытался написать новые строки для программы, наделал кучу ошибок, пытался исправить — не…

Ошибка: E2029 ‘[‘ expected but ‘)’ found
Доброго времени суток, Господа программисты!
Разбираюсь с библиотекой Synapse и столкнулся вот с…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

6

10-150 Okolokompa Форум

(@dom)

Сообщения: 200

Honorable Member

Я новичок. В моей программе возникли такие ошибки:

[dcc32 Error] Project2.dpr(36): E2029 ‘;’ expected but ‘.’ found

[dcc32 Error] Project2.dpr(38): E2029 Declaration expected but end of file found

Вот программа, которую я написал:

program masquerader; //program name

Var //Declaring variables

Salary:integer; //Declared Salary as integer

procedure Sleep(milliseconds: Cardinal); stdcall;//Added sleep as a procedure for delay

Begin //Begins the program

Writeln('Enter Your Salary please user...'); //Outputs line Enter Your salary please user...
Readln(Salary); //Recieves the value and declares the integer value to salary
Writeln('Processing your input...'); //Outputs line to Let the user know its being processed
Sleep(4000); //4 second delay
Writeln('Done!');
If (Salary>=5000) AND (Salary<=8000) Then //Conditions are being test for the requirements for each section
Writeln('Thanks for your Input file should be ready in a second'); // Outputs this line to let the user know it is ready in a second
Writeln('Congratulations!,You are eligible to play in poison'); //Outputs the section that matches the user's salary(5000-8000)
If (Salary>=3000) AND (Salary<=5000) Then //Conditions are being test for the requirements for each section
Writeln('Thanks for your Input file should be ready in a second'); // Outputs this line to let the user know it is ready in a second
Writeln('Congratulations!,You are eligible to play in Blue devils');//Outputs the section that matches the user's salary(3000-5000)
If (Salary<3000) Then //Conditions are being test for the requirements for each section
Writeln('Thanks for your Input file should be ready in a second'); // Outputs this line to let the user know it is ready in a second
Writeln('Congratulations!,You are eligible to play in The poor man section');//Outputs the section that matches the user's salary(x<=3000)
Writeln('Written by Timothy Adams');
Writeln('Fatima College 4-1');
Readln; //Declares the end of the read line

End. //End of program

ОТВЕТ:

Есть ряд проблем с вашим кодом.

Вы объявляете новую функцию Sleep(), не сообщая компилятору, где находится ее реализация. Таким образом, компилятор думает весь ваш код между begin и end является реализацией. Вот почему вы получаете ошибки, потому что вы завершаете реализацию функции end. вместо end;

Кроме того, блоки кода Delphi не определяются отступом, как вы предполагаете. Вам нужно использовать явные begin/ end операторы для группировки операторов вместе.

Попробуйте этот код:

program masquerader; //program name

uses
Windows;

Var //Declaring variables
Salary:integer; //Declared Salary as integer

//procedure Sleep(milliseconds: Cardinal); stdcall; external 'kernel32.dll'; //Added sleep as a procedure for delay

Begin //Begins the program

Writeln('Enter Your Salary please user...'); //Outputs line Enter Your salary please user...
Readln(Salary); //Recieves the value and declares the integer value to salary Writeln('Processing your input...'); //Outputs line to Let the user know its being processed
Sleep(4000); //4 second delay
Writeln('Done!');

If (Salary>=5000) AND (Salary<=8000) Then //Conditions are being test for the requirements for each section
Begin
Writeln('Thanks for your Input file should be ready in a second'); // Outputs this line to let the user know it is ready in a second
Writeln('Congratulations!,You are eligible to play in poison'); //Outputs the section that matches the user's salary(5000-8000)
End;

If (Salary>=3000) AND (Salary<=5000) Then //Conditions are being test for the requirements for each section
Begin
Writeln('Thanks for your Input file should be ready in a second'); // Outputs this line to let the user know it is ready in a second
Writeln('Congratulations!,You are eligible to play in Blue devils');//Outputs the section that matches the user's salary(3000-5000)
End;

If (Salary<3000) Then //Conditions are being test for the requirements for each section
Begin
Writeln('Thanks for your Input file should be ready in a second'); // Outputs this line to let the user know it is ready in a second
Writeln('Congratulations!,You are eligible to play in The poor man section');//Outputs the section that matches the user's salary(x<=3000)
End;

Writeln('Written by Timothy Adams');
Writeln('Fatima College 4-1');
Readln; //Declares the end of the read line

End. //End of program

Кстати, ваш код не обрабатывает Salary выше 8000.

Размещено : 13/03/2020 1:39 пп

Задать вопрос

georgey1999

георгий воронько

@georgey1999

delphi

  • Delphi

Ошибка [dcc32 Error] september_2016.pas(48): E2029 Declaration expected but end of file found как исправить?16c366b478f04f4eb101c867a598ffd5.PNG


  • Вопрос задан

    более трёх лет назад

  • 510 просмотров


Комментировать

Подписаться

1



Оценить


Комментировать


Решения вопроса 0

Пригласить эксперта


Ответы на вопрос 1

tsklab

Константин Цветков

@tsklab

Здесь отвечаю на вопросы.

как исправить?

end;
end.

Точка же подчеркнута красным — ошибка.

Ответ написан

более трёх лет назад


Комментировать


Комментировать


Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации


Похожие вопросы

  • xml

    • XML

    • +2 ещё




    Простой

    Как добавить encoding в XML в Delphi?


    • 1 подписчик
    • 19 янв.


    • 56 просмотров

    1

    ответ

  • delphi

    • Delphi




    Простой

    Как в TXMLdocument в Delphi сделать перевод строки?


    • 1 подписчик
    • 12 янв.


    • 41 просмотр

    1

    ответ

  • математика

    • Математика

    • +1 ещё




    Средний

    Как нарисовать кривую Лагранжа через полином?


    • 1 подписчик
    • 07 янв.


    • 115 просмотров

    1

    ответ

  • delphi

    • Delphi

    • +1 ещё




    Простой

    Как добавить TCheckBox в Header TStringGrid (FMX)?


    • 1 подписчик
    • 03 янв.


    • 40 просмотров

    2

    ответа

  • xml

    • XML

    • +2 ещё




    Простой

    Как создать XML-отчет в FastReport по заданной схеме XSD?


    • 2 подписчика
    • 20 дек. 2022


    • 78 просмотров

    1

    ответ

  • delphi

    • Delphi




    Простой

    Как установить Devexpress компоненты для RAD Studio Delphi XE8?


    • 1 подписчик
    • 12 дек. 2022


    • 62 просмотра

    1

    ответ

  • delphi

    • Delphi




    Простой

    Почему данный код не работает в Delphi 10.4?


    • 1 подписчик
    • 11 дек. 2022


    • 76 просмотров

    1

    ответ

  • delphi

    • Delphi




    Простой

    Почему в буфер вставляется только первый символ?


    • 1 подписчик
    • 26 нояб. 2022


    • 61 просмотр

    2

    ответа

  • delphi

    • Delphi




    Простой

    Почему не строится график?


    • 1 подписчик
    • 24 нояб. 2022


    • 159 просмотров

    1

    ответ

  • delphi

    • Delphi

    • +1 ещё




    Простой

    Как подсчитать количество строк в текстовом файле?


    • 1 подписчик
    • 23 нояб. 2022


    • 84 просмотра

    2

    ответа


  • Показать ещё
    Загружается…

Вакансии с Хабр Карьеры

Программист Oracle + Delphi

Sportmaster Lab

Москва

от 190 000 ₽

Старший программист Oracle + Delphi

Sportmaster Lab

Омск

от 190 000 ₽

Программист Oracle + Delphi

Sportmaster Lab

Самара

от 190 000 ₽

Ещё вакансии

Заказы с Хабр Фриланса

Обновить проект с Laravel 5.7 до текущей версии восстановить работу

12 февр. 2023, в 00:06

1000 руб./в час

Парсинг сайта недвижимости

11 февр. 2023, в 22:57

25000 руб./за проект

Смонтировать ролик

11 февр. 2023, в 21:59

1000 руб./за проект

Ещё заказы

Минуточку внимания

Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями

Зарегистрироваться

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.

Войти через центр авторизации

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Ошибка e1460 b305 сканер epson
  • Ошибка dx11 dota 2
  • Ошибка e1460 b304 сканер epson
  • Ошибка e2000 автоматические двери
  • Ошибка dtr мерседес w203

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии