Statement expected but procedure found ошибка в 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;

 
pro_xaoc ©
 
(2010-05-20 23:38)
[0]

Всем привет! Прошу помогите. Вот я написал такой код:

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
 procedure poisk();
 var
    a:boolean;
 begin
   a:=pos(«,», edit1.text);
 end;
if poisk=true then
 edit1.Text:=edit1.Text;
if edit1.text<>»0″ then
 edit1.Text:=edit1.text+»,»
else edit1.Text:=»,»;
end;

а компилятор ругается «statement expected but «PROCEDURE» found». Блин перепробовал все что знаю, но результата нет. Как можно исправить?


 
Германн ©
 
(2010-05-20 23:42)
[1]


> Как можно исправить?

вторую и третью строчку поменять местами.


 
pro_xaoc ©
 
(2010-05-20 23:44)
[2]

серьёзно? ща посмотрю))


 
turbouser ©
 
(2010-05-20 23:45)
[3]


> pro_xaoc ©   (20.05.10 23:38)  

мда. жесть. здесь как минимум 2 ошибки и 2 нелепости


 
Германн ©
 
(2010-05-20 23:45)
[4]

Т.е. вторую строчку перенести после окончания описания процедуры poisk


 
turbouser ©
 
(2010-05-20 23:47)
[5]


> Германн ©   (20.05.10 23:45) [4]

Сейчас будет вопрос о второй ошибке :)


 
pro_xaoc ©
 
(2010-05-20 23:51)
[6]

Код изменил так:

procedure TForm1.SpeedButton4Click(Sender: TObject);
 function poisk():boolean;
 begin
   pos(«,», edit1.text);
 end;
 begin
if poisk=true then
 edit1.Text:=edit1.Text;
if edit1.text<>»0″ then
 edit1.Text:=edit1.text+»,»
else edit1.Text:=»,»;
end;

вот теперь, у меня тут ошибка есть (не синтаксическая), как можно сделать так, чтобы когда значение функции было true, то выполнился код if poisk=true then
 edit1.Text:=edit1.Text;

?


 
turbouser ©
 
(2010-05-21 00:02)
[7]


> pro_xaoc ©   (20.05.10 23:51) [6]

Ты сам понимаешь, что тебе требуется?


 
pro_xaoc ©
 
(2010-05-21 00:05)
[8]

как можно сделать так, чтобы когда значение функции poisk было true, то выполнился код:
if poisk=true then
edit1.Text:=edit1.Text;


 
turbouser ©
 
(2010-05-21 00:06)
[9]


> edit1.Text:=edit1.Text;

В чем смыл этого?


 
pro_xaoc ©
 
(2010-05-21 00:08)
[10]

ну если истина, то значение edit1.text не изменяется …


 
turbouser ©
 
(2010-05-21 00:10)
[11]

if not poisk then
begin
 if edit1.text<>"0" then
   edit1.Text:=edit1.text+","
 else edit1.Text:=",";
end;


 
pro_xaoc ©
 
(2010-05-21 00:12)
[12]

ок, ща попробую …


 
Германн ©
 
(2010-05-21 00:47)
[13]

Следующим будет вопрос — почему не работает
> if edit1.text<>»0″
.
Имхо


 
turbouser ©
 
(2010-05-21 00:52)
[14]


> Германн ©   (21.05.10 00:47) [13]

..и почему не работает poisk..


 
turbouser ©
 
(2010-05-21 00:53)
[15]

Автор, с таким уровнем знаний даже в начинающие рано.


 
{RASkov} ©
 
(2010-05-21 00:54)
[16]

> [15] turbouser ©   (21.05.10 00:53)

Сейчас он тебе расскажет какой ты не хороший помошник…. держись)


 
Демо ©
 
(2010-05-21 01:07)
[17]


> pro_xaoc ©   (20.05.10 23:38) 

Ты бы словами сказал, что ты получить хочешь от своих действий…


 
pro_xaoc ©
 
(2010-05-21 01:29)
[18]

Методом тыка разобрался! Спс всем за старания!


 
Германн ©
 
(2010-05-21 01:46)
[19]


> RASkov} ©   (21.05.10 00:54) [16]
>
> > [15] turbouser ©   (21.05.10 00:53)
>
> Сейчас он тебе расскажет какой ты не хороший помошник…
> . держись)

Не рассказал. Знать турбоюзеру пока далеко до Плохиша!
> turbouser ©   (21.05.10 00:52) [14]
>
>
> > Германн ©   (21.05.10 00:47) [13]
>
> ..и почему не работает poisk..

:)
Во втором варианте очевидно очепятка.


 
Германн ©
 
(2010-05-21 01:47)
[20]


> Демо ©   (21.05.10 01:07) [17]
>
>
> > pro_xaoc ©   (20.05.10 23:38)
>
>
> Ты бы словами сказал, что ты получить хочешь от своих действий.
> ..

Автор пока не дотягивает до уровня «правильного новичка».


 
Anatoly Podgoretsky ©
 
(2010-05-21 08:39)
[21]


> как можно сделать так, чтобы когда значение функции poisk
> было true, то выполнился код:
> if poisk=true then
> edit1.Text:=edit1.Text;

Так и будет, хотя тут две нелепости.


 
Lyonux ©
 
(2010-05-21 13:37)
[22]

Я думаю, эти ссылки будут полезны..

http://www.realcoding.net/articles/obyavlenie-protsedury.html
http://www.realcoding.net/articles/obyavlenie-funktsii.html

Ну так, для общего развития..


 
Amoeba_
 
(2010-05-21 18:10)
[23]

Может автору вопроса лучше прежде чем кодить заглянуть все-таки сюда, а не в realcoding?
http://www.delphikingdom.com/lyceum


 
Демо ©
 
(2010-05-22 00:28)
[24]


> Я думаю, эти ссылки будут полезны..

Помню как 10 лет назад этот реалколдинг вообще ничего из себя не представлял, а лишь лихорадочно тащил со всего интернета статьи для раскрутки.


 
Игорь Шевченко ©
 
(2010-05-22 00:49)
[25]

Демо ©   (22.05.10 00:28) [24]

ты че на реальных пацанов наезжаешь ?


 
Германн ©
 
(2010-05-22 01:03)
[26]


> ты че на реальных пацанов наезжаешь ?
>

Вспомнил свою ДМ-овскую молодость, наверно. :)


 
Anatoly Podgoretsky ©
 
(2010-05-22 08:54)
[27]

> Демо  (22.05.2010 00:28:24)  [24]

Важно, не что он тогда представлял, а что сейчас представляет.


 
Lyonux ©
 
(2010-05-22 09:21)
[28]

мм..да я вообще-то не на сайт, а на статейки ссылку давала.. Завелись-то как все)


 
Sha ©
 
(2010-05-22 12:38)
[29]

> Lyonux ©   (22.05.10 09:21) [28]
> мм..да я вообще-то не на сайт, а на статейки ссылку давала..

Посмотрел статейку про объявление функции.

Описание поехало:
// здесь объявления локальных переменных begin

Первая функция, названная Islnt вместо isint:
не откомпилируется из-за скобки }
не откомпилируется из-за сравнения символа с числом 113
Ее проще было бы переписать так:
function IsInt(ch: Char): Boolean;
begin
 Result:=(ch >= "0") and (ch <= "9") // цифры
     or (ch = #13) // клавиша <Enter>
     or (ch = #8); // клавиша <Backspace>
end;

Но тут все равно не хватает проверки на допустимость ввода знака (+,-),
на переполнение, на нажатие клавиши Del, на ввод $…

Вторая функция также не без ошибок:
не компилируется из-за лишнего апострофа «
не позволяет вводить знак +
не позволяет вводить порядок
Компилятор предупреждает о неопределенном результате
в двух ветках оператора case


 
Leonid Troyanovsky ©
 
(2010-05-22 13:02)
[30]


> Sha ©   (22.05.10 12:38) [29]

> Ее проще было бы переписать так:

Result := ch in [«0»..»9″,#8, #13];

Только непонятно, зачем #13.


Regards, LVT.


 
turbouser ©
 
(2010-05-22 13:07)
[31]


> Lyonux ©   (22.05.10 09:21) [28]

Не обращай внимания :) Здесь такое вполне обыденно :)


 
Sha ©
 
(2010-05-22 13:10)
[32]

> Leonid Troyanovsky ©   (22.05.10 13:02) [30]
> Result := ch in [«0»..»9″,#8, #13];

Точно.

> Только непонятно, зачем #13.

Мне тоже.

> Lyonux ©   (22.05.10 09:21) [28]

Пример к статейке про процедуры:
не компилируется, т.к. объявлена переменная xl, а используется x1
один из корней вычисляется неверно
процедура ломается, если коэффициент при х^2 равен нулю.


 
turbouser ©
 
(2010-05-22 13:48)
[33]


> Sha ©

А если я дам ссылку на гуглопоиск, например, http://www.google.ru/search?hl=ru&newwindow=1&client=firefox&hs=aa6&rls=org.mozilla%3Aru%3Aofficial&q=delphi+%2B%D1%88%D0%B5%D0%BB%D0%BB&aq=f&aqi=&aql=&oq=&gs_rfai=
тоже будем ошибки искать?


 
Sha ©
 
(2010-05-22 14:00)
[34]

> Lyonux ©   (22.05.10 09:21) [28]

Это я к тому, что лучше ссылки давать на статейки, где меньше ошибок

> turbouser ©   (22.05.10 13:48) [33]
> А если я дам ссылку на гуглопоиск, тоже будем ошибки искать?

Не видишь, я с дамой разговариваю. Отвали.


 
turbouser ©
 
(2010-05-22 14:04)
[35]

:)


 
Игорь Шевченко ©
 
(2010-05-23 00:31)
[36]

turbouser ©   (22.05.10 13:48) [33]


> тоже будем ошибки искать?

можем удалить. на выбор.


 
Lyonux ©
 
(2010-05-24 03:55)
[37]

Мы будем расстреливать неверных из Царь-Пушки! Выживших догонять и карать ржавой секирой ужоса)
Кстати говоря, автору ветки всё это, видимо, не очень интересно))


 
Германн ©
 
(2010-05-24 04:04)
[38]


> Lyonux ©   (24.05.10 03:55) [37]
>
> Мы будем расстреливать неверных из Царь-Пушки! Выживших
> догонять и карать ржавой секирой ужоса)
> Кстати говоря, автору ветки всё это, видимо, не очень интересно))
>

Ещё одна Рипли?
А я, лично, не против. И даже за!
Женьщинов на ДМ не хватает. А женьщины способны на иной взгляд!


 
Lyonux ©
 
(2010-05-24 04:07)
[39]

нас просто заткнуть невозможно) тем более меня сутки не было =) Не могу же я дать умереть ветке в моё отсутствие! Теперь можно закрывать =)


 
Демо ©
 
(2010-05-25 13:21)
[40]


> Игорь Шевченко ©   (22.05.10 00:49) [25]
> Демо ©   (22.05.10 00:28) [24] ты че на реальных пацанов
> наезжаешь ?

Да я так, у стеночки постою… ;)


> Lyonux ©   (24.05.10 03:55) [37]
> Мы будем расстреливать неверных из Царь-Пушки! Выживших
> догонять и карать ржавой секирой ужоса)Кстати говоря, автору
> ветки всё это, видимо, не очень интересно))

Зато нам интересно!


Выскочила неожиданная ошибка.

[Error] Unit1.pas(191): Statement expected but ‘PROCEDURE’ found

С чем это может быть связано?

Часть кода

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
if checkBox2.Checked = true then
  edit3.Enabled := true
else
  edit3.Enabled := false;
end;

И ещё такой вопрос. Программа работает нормально, но после выполнения опред действия выскакивает ошибка «Invalid poiner operation».

Модераторы:Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Twins

Сообщения:2
Зарегистрирован:27 ноя 2004, 11:36
Откуда:Луганск

Help me.
Глупость но факт.
В Delphi 7 не могу открыть форму2 из формы1

Создаю Form1
Создаю Button1 в Form1
Компилирую
Создаю Form2

Вешаю на Button1 в Form1
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.ShowModal;
end;

Компилирую
Пишет
(Ошибка) Unit.pas(35): Undeclared identifier: «form2»
(Фатальная ошибка) Proect1.dpr6: Cold not compile used unit ‘Unit1.pas’

Дальше — мрак. Тишина

Заранее спасибо за помощь.
Чайник (надеюсь не на долго)

Аватара пользователя

AiK

Сообщения:2271
Зарегистрирован:13 фев 2004, 18:14
Откуда:СПб
Контактная информация:

27 ноя 2004, 17:22

Twins, во-первых, ошибка из-за того, что в первом модуле переменная form2 не объявлена.
Во-вторых, прежде чем показывать форму, её создать нужно.

Т.е. тебе нужно что-то вроде этого:
В первом модуле:
Uses Unit2.pas;

procedure TForm1.Button1Click(Sender: TObject);
var form2: TForm2;
begin
form2:=TForm2.Create(Form1);
form2.ShowModal;
end;

Даже самый дурацкий замысел можно воплотить мастерски

Twins

Сообщения:2
Зарегистрирован:27 ноя 2004, 11:36
Откуда:Луганск

27 ноя 2004, 22:22

AiK

Большое человеческое спасибо.
Хватило
В первом модуле:
Uses Unit2;

Еще Чайник, но уже меньше.
Twins

Лопата:)

Сообщения:4
Зарегистрирован:17 дек 2013, 09:32

17 дек 2013, 09:36

AiK писал(а):Twins,
procedure TForm1.Button1Click(Sender: TObject);

вот на этой строчке он меня и мучает:
[Error] Unit1.pas(36): Statement expected but ‘PROCEDURE’ found
что делать??

Аватара пользователя

somewhere

Сообщения:1837
Зарегистрирован:31 авг 2006, 17:14
Откуда:71 RUS
Контактная информация:

17 дек 2013, 10:56

что делать??

Скорее всего процедура не описана в классе TForm1

It’s a long way to the top if you wanna rock’n’roll

Лопата:)

Сообщения:4
Зарегистрирован:17 дек 2013, 09:32

17 дек 2013, 11:05

А можно подробнее написать, как это сделать, а то я совсем не понимаю :)

Аватара пользователя

somewhere

Сообщения:1837
Зарегистрирован:31 авг 2006, 17:14
Откуда:71 RUS
Контактная информация:

17 дек 2013, 11:08

В описателе класса добавить
procedure Button1Click(Sender: TObject);

кнопке Button1 событию OnClick присвоить обработчик Button1Click

It’s a long way to the top if you wanna rock’n’roll

Лопата:)

Сообщения:4
Зарегистрирован:17 дек 2013, 09:32

17 дек 2013, 11:25

type
TForm1 = class(TForm)
Button1Click(Sender: TObject);
теперь он просит заменить ( на :

заменила
теперь опять докопался до процедуры
[Error] Unit1.pas(50): Statement expected but ‘PROCEDURE’ found

Аватара пользователя

somewhere

Сообщения:1837
Зарегистрирован:31 авг 2006, 17:14
Откуда:71 RUS
Контактная информация:

17 дек 2013, 11:40

Дальше ничего не могу сказать — нет полного кода

It’s a long way to the top if you wanna rock’n’roll

Лопата:)

Сообщения:4
Зарегистрирован:17 дек 2013, 09:32

17 дек 2013, 14:45

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
lbl1: TLabel;
edt1: TEdit;
procedure button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm;
Form2: TForm;
Edit1: TEdit;
implementation
{$R *.dfm}
begin
procedure button1Click(Sender: TObject);
begin
form2.Show;
end;

end.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ActnList, ComCtrls, StdCtrls, StdActns;

type
TForm1 = class(TForm)
ActionList1: TActionList;
Memo1: TMemo;
MainMenu1: TMainMenu;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
StatusBar1: TStatusBar;
New: TAction;
Open: TAction;
Save: TAction;
SaveAs: TAction;
Close1: TAction;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
EditSelectAll1: TEditSelectAll;
EditDelete1: TEditDelete;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
procedure NewExecute(Sender: TObject);
procedure OpenExecute(Sender: TObject);
procedure SaveExecute(Sender: TObject);
procedure SaveAsExecute(Sender: TObject);
procedure Close1Execute(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure mnuItemAddClick(Sender: TObject);
procedure mnuItemDeleteClick(Sender: TObject);



private
{ Private declarations }
public
{ Public declarations }
Filename: string;
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}





procedure TForm1.NewExecute(Sender: TObject);
begin
Memo1.Lines.Clear; // â ýòîé ñòðîêå ìû îò÷èùàåì ïîëå Ìåìî
FileName:='new.txt'; // çäåñü ïðèñâàèâàåì ïåðåìåííîé FileName èìÿ new.txt
StatusBar1.Panels[0].Text:=FileName;
end;


procedure TForm1.OpenExecute(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
FileName:=OpenDialog1.FileName;
StatusBar1.Panels[0].Text:=FileName;
end;
end;




procedure TForm1.SaveExecute(Sender: TObject);
begin
if (FileName='new.txt') then SaveAsExecute(Nil) 
else
Memo1.Lines.SaveToFile(FileName);

end;

procedure TForm1.SaveAsExecute(Sender: TObject);
begin
FileName:=SaveDialog1.FileName;
SaveDialog1.InitialDir:=ExtractFilePath(FileName); 
if SaveDialog1.Execute then
begin 
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
FileName:=SaveDialog1.FileName; 
StatusBar1.Panels[0].Text:=FileName;
end;
end;




procedure TForm1.Close1Execute(Sender: TObject);
begin
if MessageDlg (' Âû óâåðåíû, ÷òî õîòèòå âûéòè? ', mtConfirmation,
[mbYes, mbNo],0) = mrYes
then Form1.Close;
end;




procedure TForm1.N14Click(Sender: TObject);
begin
Form2.ShowModal;
end;





procedure TForm1.mnuItemAddClick(Sender: TObject);
var NewItem : TMenuItem;
begin
NewItem := TMenuItem.Create(Self);
NewItem.Caption := 'Íîâûé ýëåìåíò';
mnuFile.Add(NewItem);
end;

procedure TForm1.mnuItemDeleteClick(Sender: TObject);
begin
if mnuFile.Items[2].Caption ='Âòîðîé ýëåìåíò';
then
mnuFile.Delete(2);
end;

end.

Понравилась статья? Поделить с друзьями:
  • State of survival 110000 ошибка
  • State of decay системная ошибка msvcp110 dll что делать
  • State of decay ошибка при запуске приложения 0xc0000142
  • State of decay ошибка при запуске приложения 0xc000007b
  • State of decay ошибка когда уже в игре