Error unit1 pas 37 expected but found

',' expected but END found Delphi Решение и ответ на вопрос 806020

Frankie Avalon

4 / 4 / 0

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

Сообщений: 64

1

11.03.2013, 22:16. Показов 12840. Ответов 16

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


Добрый вечер.
Застрял вот на такой ошибке : » ‘,’ expected but END 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
unit Unit2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, unit1;
 
type
  TForm2 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
 
 
var
 Form2: TForm2;
 
 
implementation
 
{$R *.dfm}
 
procedure TForm2.Button1Click(Sender: TObject);
const
  Fn = 'blabla.txt';
var
 myFile: TextFile;
 i : string;
 FileName : String;
begin
  FileName := ExtractFilePath( ParamStr(0) ) + Fn;
  AssignFile(myFile, FileName);
 
  if FileExists(FileName) then Append(myFile)
  else Rewrite(myFile);
    i:=Edit1.Text;
    WriteLn(myFile,i);
  CloseFile(myFile);
  end
 
end;

Добавлено через 9 минут
с этим разобрался теперь ругается на первую форму.

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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
uses Unit2;
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
 var
 myFile : TextFile;
 text   : string;
 i: String;
 vibor: Integer;
begin
if FileExists(extractfilepath(application.ExeName)+'blabla.txt') then //ïðîâåðêà íà ñóùåñòâîâàíèå ôàéëà
 
  begin
    AssignFile(myFile, 'blabla.txt');  //îòêðûâàåì ôàéë
  end
    else                             //â ïðîòèâîïîëîæíîì ñëó÷àå
  begin
    vibor := MessageDlg('Ó âàñ íåò ïàðîëÿ.Õîòèòå ñîçäàòü?',mtConfirmation, [mbYes,mbNo], 0);
      if vibor=mrYes     then  Form2.Show;  Form1.Hide;
      if vibor=mrNo then  ShowMessage('Êàê õîòèòå!');  Application.Terminate;
  end
 
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 var
 myFile : TextFile;
 text   : string;
 i: String;
 vibor: Integer;
begin
    Read(myFile, text)
    i:=Edit1.Text;
    if i=text then   ShowMessage('Ïàðîëü âåðåí!');  Application.Terminate
    else
      begin
       vibor:= MessageDlg('Ïàðîëü íåâåðåí! Ïîïðîáîâàòü åùå ðàç?',mtConfirmation, [mbYes,mbNo], 0);
         if vibor=mrYes then  ShowMessage('');
         if vibor=mrNo  then  ShowMessage('Êàê õîòèòå!');  Application.Terminate;
       end
    CloseFile(myFile);
end;
 
end.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
Build
  [Error] Unit1.pas(42): Undeclared identifier: 'vibor'
  [Warning] Unit1.pas(43): Comparing signed and unsigned types - widened both operands
  [Warning] Unit1.pas(44): Comparing signed and unsigned types - widened both operands
  [Error] Unit1.pas(57): Missing operator or semicolon
  [Error] Unit1.pas(59): 'END' expected but 'ELSE' found
  [Error] Unit1.pas(60): ';' expected but 'BEGIN' found
  [Error] Unit1.pas(61): Undeclared identifier: 'vibor'
  [Warning] Unit1.pas(62): Comparing signed and unsigned types - widened both operands
  [Warning] Unit1.pas(63): Comparing signed and unsigned types - widened both operands
  [Error] Unit1.pas(65): '.' expected but identifier 'CloseFile' found
  [Warning] Unit1.pas(66): Text after final 'END.' - ignored by compiler
  [Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'

прошу помощи, как исправить и оптимизировать код?

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



0



Programming

Эксперт

94731 / 64177 / 26122

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

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

11.03.2013, 22:16

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

Ошибка ‘UNTIL’ expected but ‘END’ found
Вот код-
program lab3;

{$APPTYPE CONSOLE}

var
a: array of integer;
n,i,j,s,v:…

Ошибка: ‘END’ expected but ‘ELSE’ found
Задание:
Написать программу, которая бы по введенному номеру времени года (1 — зима, 2 — весна, 3…

Ошибка: ‘END’ expected but ‘UNTIL’ found
unit Unit1;

interface

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

Ошибка ‘;’ expected but end of file found
При написании программы на Delphi столкнулась с ошибкой (видно на скриншоте). Вот текст моей…

16

angstrom

11.03.2013, 22:21

2

Delphi
1
2
3
4
5
  begin
    vibor := MessageDlg('У вас нет пароля.Хотите создать?',mtConfirmation, [mbYes,mbNo], 0);
      if vibor=mrYes     then  Form2.Show;  Form1.Hide;
      if vibor=mrNo then  ShowMessage('Как хотите!');  Application.Terminate;
  end

Думаешь написание кода в одну строку освобождает от необходимости писать операторные скобки (begin/end)?

ВАСИЛЕВС

561 / 484 / 168

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

Сообщений: 1,561

11.03.2013, 22:28

3

Строка 59: «;» не поставили и вообще

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Read(myFile, text)
    i:=Edit1.Text;
    if i=text then
     begin
      ShowMessage('Пароль верен!');
      Application.Terminate;
     end
    else
      begin
       vibor:= MessageDlg('Пароль неверен! Попробовать еще раз?',mtConfirmation, [mbYes,mbNo], 0);
         if vibor=mrYes then
          ShowMessage('')
         else
          begin
           ShowMessage('Как хотите!');
           Application.Terminate;
           end;
      end;

Оптимизация 46 — 47:

Delphi
1
2
3
4
5
6
7
8
9
10
11
vibor := MessageDlg('У вас нет пароля.Хотите создать?',mtConfirmation, [mbYes,mbNo], 0);
      if vibor=mrYes then
       begin
        Form2.Show;
        Form1.Hide;
       end
      else
       begin
        ShowMessage('Как хотите!');
        Application.Terminate;
       end;



1



Frankie Avalon

4 / 4 / 0

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

Сообщений: 64

11.03.2013, 22:31

 [ТС]

4

Спасибо за ответы!
Все поисправлял, но на этом моменте

Delphi
1
      if vibor=mrYes     then  Form2.Show;  Form1.Hide;

выбивает ошибку

Миниатюры

',' expected but END found
 



0



angstrom

11.03.2013, 22:33

5

В указанной строке как раз не всё исправлено.

Frankie Avalon

4 / 4 / 0

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

Сообщений: 64

11.03.2013, 22:37

 [ТС]

6

Просто процитировал. Вот обновленный вариант:

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
83
84
85
86
87
88
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
uses Unit2;
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
 var
 myFile : TextFile;
 vibor: integer;
begin
if FileExists(extractfilepath(application.ExeName)+'blabla.txt') then //ïðîâåðêà íà ñóùåñòâîâàíèå ôàéëà
 
  begin
    AssignFile(myFile, 'blabla.txt');  //îòêðûâàåì ôàéë
  end
    else                             //â ïðîòèâîïîëîæíîì ñëó÷àå
  begin
    vibor := MessageDlg('Ó âàñ íåò ïàðîëÿ.Õîòèòå ñîçäàòü?',mtConfirmation, [mbYes,mbNo], 0);
      if vibor=mrYes     then
      begin
      Form2.Show;
      Form1.Close;
      end;
      if vibor=mrNo then
      begin
      ShowMessage('Êàê õîòèòå!');
      Application.Terminate;
      end
  end
 
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 var
 myFile : TextFile;
 text   : string;
 i: String;
 vibor: Integer;
begin
    Read(myFile, text);
    i:=Edit1.Text;
    if i=text then
    begin
    ShowMessage('Ïàðîëü âåðåí!');
    Application.Terminate
    end
    else
      begin
       vibor:= MessageDlg('Ïàðîëü íåâåðåí! Ïîïðîáîâàòü åùå ðàç?',mtConfirmation, [mbYes,mbNo], 0);
         if vibor=mrYes then
         begin
         ShowMessage('123');
         end;
         if vibor=mrNo  then
         begin
         ShowMessage('Êàê õîòèòå!');
         Application.Terminate;
         end
       end;
    CloseFile(myFile);
end;
 
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
unit Unit2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, unit1;
 
type
  TForm2 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
 
 
var
 Form2: TForm2;
 
 
implementation
 
{$R *.dfm}
 
procedure TForm2.Button1Click(Sender: TObject);
const
  Fn = 'blabla.txt';
var
 myFile: TextFile;
 i : string;
 FileName : String;
begin
  FileName := ExtractFilePath( ParamStr(0) ) + Fn;
  AssignFile(myFile, FileName);
 
  if FileExists(FileName) then Append(myFile)
  else Rewrite(myFile);
    i:=Edit1.Text;
    WriteLn(myFile,i);
  CloseFile(myFile);
 
 
end;
end.



0



ВАСИЛЕВС

561 / 484 / 168

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

Сообщений: 1,561

11.03.2013, 22:45

7

Delphi
1
2
3
4
if vibor=mrYes     then
      // ****
f vibor=mrNo then
      // ****

Это зачем? Я же писал

Delphi
1
2
3
4
if vibor=mrYes then
    // ****
else
    // ****

У вас же два варианта ответа mrYes или mrNo. Если не первое, тогда разве не второе?

Добавлено через 1 минуту
Насчет ошибки: у вас Form2 существует?



0



4 / 4 / 0

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

Сообщений: 64

11.03.2013, 22:53

 [ТС]

8

Цитата
Сообщение от ВАСИЛЕВС
Посмотреть сообщение

Насчет ошибки: у вас Form2 существует?

Да, созданы две формы, в каждой 3 элемента.



0



angstrom

11.03.2013, 22:56

9

При вызове Form2.Show в событии OnCreate первой формы, вторая ещё не существует. Перенеси код в OnShow.

ВАСИЛЕВС

561 / 484 / 168

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

Сообщений: 1,561

11.03.2013, 22:57

10

Ну наверно в Unit1 добавить:

Delphi
1
2
uses Unit2;
var Form2: TForm2;



0



angstrom

11.03.2013, 23:00

11

У ТС это есть. О причине ошибки смотри выше.

Frankie Avalon

4 / 4 / 0

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

Сообщений: 64

11.03.2013, 23:24

 [ТС]

12

Опять ошибка, теперь уже при чтении файла при нажатии на баттон, строки 62-94. Ребят выручайте.

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
 
implementation
 
uses Unit2;
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
 var
 myFile : TextFile;
 vibor: integer;
 Form2: TForm2;
begin
 
if FileExists(extractfilepath(application.ExeName)+'blabla.txt') then //ïðîâåðêà íà ñóùåñòâîâàíèå ôàéëà
 
  begin
    AssignFile(myFile, 'blabla.txt');  //îòêðûâàåì ôàéë
  end
    else                             //â ïðîòèâîïîëîæíîì ñëó÷àå
  begin
    vibor := MessageDlg('Ó âàñ íåò ïàðîëÿ.Õîòèòå ñîçäàòü?',mtConfirmation, [mbYes,mbNo], 0);
      if vibor=mrYes     then
      begin
      Form1.Close;
      Application.CreateForm(TForm2, Form2);
      Form2.Visible:=true;
      end;
      if vibor=mrNo then
      begin
      ShowMessage('Êàê õîòèòå!');
      Application.Terminate;
      end
  end
 
end;
 
procedure TForm1.Button1Click(Sender: TObject);
const
  Fn = 'blabla.txt';
var
 myFile : TextFile;
 text   : string;
 i: String;
 vibor: Integer;
 FileName : String;
begin
    FileName := ExtractFilePath( ParamStr(0) ) + Fn;
    AssignFile(myFile, FileName);
    Read(myFile, text);
    i:=Edit1.Text;
    if i=text then
    begin
    ShowMessage('Ïàðîëü âåðåí!');
    Application.Terminate
    end
    else
      begin
       vibor:= MessageDlg('Ïàðîëü íåâåðåí! Ïîïðîáîâàòü åùå ðàç?',mtConfirmation, [mbYes,mbNo], 0);
         if vibor=mrYes then
         begin
         ShowMessage('123');
         end;
         if vibor=mrNo  then
         begin
         ShowMessage('Êàê õîòèòå!');
         Application.Terminate;
         end
       end;
    CloseFile(myFile);
end;
 
end.

Миниатюры

',' expected but END found
 



0



angstrom

11.03.2013, 23:30

13

При нажатии на кнопку, файл уже присоединён в OnCreate. Зачем?

4 / 4 / 0

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

Сообщений: 64

11.03.2013, 23:45

 [ТС]

14

Убрал повторное присоединение, ошибка та же. Как я понял ошибка при открытии текстового файла и преобразования содержимого в переменную. Но я просто не знаю как это правильно реализовать.



0



angstrom

11.03.2013, 23:51

15

Попробуй так.

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
procedure TForm1.Button1Click(Sender: TObject);
const
  Fn = 'blabla.txt';
var
 myFile : TextFile;
 text   : string;
 vibor: Integer;
 FileName : String;
begin
  if not FileExists(fn) then
    Exit;
 
  AssignFile(myFile, FN);
  Reset(myFile);
  ReadLn(myFile, text);
  if Edit1.Text = text then
  begin
    ShowMessage('Пароль верен!');
    Application.Terminate;
  end
  else
  begin
    if MessageDlg('Пароль неверен! Попробовать еще раз?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    begin
      ShowMessage('123');
    end
    else
    begin
      ShowMessage('Как хотите!');
      Application.Terminate;
    end
  end;
  CloseFile(myFile);
end;

Frankie Avalon

4 / 4 / 0

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

Сообщений: 64

12.03.2013, 00:20

 [ТС]

16

Спасибо огромное, все работает. Единственно что теперь после сохранение в файл первая форма открывается, а вторая не хочет скрываться.Уже перепробовал Free, close, hide, visible false — ничего не хочет ее скрывать.

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
unit Unit2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, unit1;
 
type
  TForm2 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
 
 
var
 Form2: TForm2;
 
 
implementation
 
{$R *.dfm}
 
procedure TForm2.Button1Click(Sender: TObject);
const
  Fn = 'blabla.txt';
var
 myFile: TextFile;
 i : string;
 FileName : String;
begin
  FileName := ExtractFilePath( ParamStr(0) ) + Fn;
  AssignFile(myFile, FileName);
 
  if FileExists(FileName) then Append(myFile)
  else Rewrite(myFile);
    i:=Edit1.Text;
    WriteLn(myFile,i);
  CloseFile(myFile);
  ShowMessage('Ïàðîëü óñïåøíî ñîçäàí!');
     Form2.Free;
     Form1.Show;
 
end;
 
 
 
end.



0



angstrom

12.03.2013, 00:29

17

Не нужно добавлять в код ничего лишнего. Форму освобождать самому, если не создавал, нельзя.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm2.Button1Click(Sender: TObject);
const
  Fn = 'blabla.txt';
var
 myFile: TextFile;
begin
  AssignFile(myFile, FN);
 
  if FileExists(FN) then
    Append(myFile)
  else
    Rewrite(myFile);
 
  WriteLn(myFile, Edit1.Text);
  CloseFile(myFile);
  ShowMessage('Пароль успешно создан!');
  Form2.Hide;
  Form1.Show;
end;

IT_Exp

Эксперт

87844 / 49110 / 22898

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

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

12.03.2013, 00:29

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

Statement expected but end of file found
Подскажите где здесь ошибка: я так понимаю, что с end-ами,что-то ?
begin
if key=#13 then
begin…

Ошибка Statement expected but end of file found
помогите исправить ошибки,нужно написать тест но постоянно выползает ошибка Statement expected but…

Выдает ошибку ‘END’ expected but ‘ELSE’ found последним else. Как исправить?
unit Unit1;

interface

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

[Error] Unit1.pas(43): Declaration expected but end of file found
unit Unit1;

interface

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

Ошибка «BEGIN expected but END found»
Unit1.pas(66): BEGIN expected but END found

и вот сам код
procedure TForm1.btn1Click(Sender:…

Ошибка: Expected END but received ELSE
Всем привет , кто может помочь?!) строка 59 ругается на else. (expected END but received ELSE).

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

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

17

Типов сообщений компилятора — более двухсот. Рассмотрим перечень наиболее встречающихся сообщений класса Error

  • 0. <Что-то1> expected but <Что-то2> found. Обычно это сообщение возникает при синтаксической ошибке.Например,в случае небаланса скобок,компилятор сообщит: ‘)’ expected but ‘;’ found (вместо ожидавшейся скобки найдена запятая).

    Компилятор часто сообщает, что ‘end’ ожидается,например:x:= 5,7; здесь неуместен разделитель-запятая, а сообщается про end. (‘END’ expected but ‘,’ found)

  • 1. <Имя> is not a type identifier. Данное <Имя> не является именем типа.
  • 2. ‘;’ not allowed before ‘Else’. Перед else нельзя ставить точку с запятой
  • 3. Abstract method must be virtual or dynamic. Абстрактный метод должен быть виртуальным или динамическим.
  • 4. Ambiguous overloaded call to <Имя блока>. Компилятор не может однозначно выбрать перегружаемый блок. Измените параметр.
  • 5. Array type required. Ошибка возникает в случаях, когда в индексе элемента массива указано больше уровней, чем предусмотрено описанием, и если массив не описан. Например, после объявления двумерного массива х или простой переменной х ошибочно записывают элемент х[2,1,1] (в нем показано три измерения).
  • 6. Assignment to FOR-loop variable <Имя>. Присваивание значения параметру FOR-цикла в теле цикла.

    Например, вследствие описки дважды используется имя i в кратном цикле:

    For i:= 1 to n do For i:= 1 to m do ...
    
  • 7. Break or Continue outside of loop. Break или Continue — не в цикле.
  • 8. Cannot initialize local variables. Локальные переменные запрещено инициализировать (задавать им значения при описании).
  • 9. Cannot assign to/read a read-only/write-only property. Присвоение значения свойству read/only и чтение свойства write/only запрещены.
  • 10. Constant expression expected.В этом месте должна стоять константа или константное выражение, например константа выбора в структуре Case.
  • 11. Constant expression violates subrange bounds. Выход значения константы из диапазона. Контроль не полон. Например, «сойдет с рук» присваивание x:=3000000000, где х имеет тип integer, но начение х будет искажено.
  • 12. Constant or type identifier expected. Требуется имя типа или тип-диапазон.
  • 13. Could not compile used unit <Имя>. Компиляция присоединенного модуля <Имя> невозможна.
  • 14. Data type too large. Тип определяет структуру размером более 2 Гбайт; это слишком много.
  • 15. Declaration expected but <Что-то> found. Пропущено описание или оператор.
  • 16. Declaration of <Имя> differs from previous declarations… Данный заголовок блока не соответствует упреждающему объявлению блока.
  • 17. Default parameter <Имя> must be by-value or constant. Необязательный параметр (со значением по умолчанию) не должен вызываться по ссылке.
  • 18. Expression expected. В этом месте программы должно стоять выражение.
  • 19. Expression too complicated. Выражение излишне сложно для компиляции.
  • 20. File type not allowed here. В этом месте или в этой роли файловую переменную нельзя использовать. Например, она не может быть формальным параметром-значением.
  • 21. For loop control variable must be simple local variable. Параметр цикла должен быть простой локальной (описанной в этом же блоке) переменной.
  • 22. For loop control variable must have ordinal type. Параметр цикла должен иметь порядковый тип.Вещественный тип запрещен.
  • 23. Function needs result type. В заголовке функции надо указывать тип ее результата.
  • 24. Identifier expected but <Что-то> found. В этом месте должно стоять имя. Например, пропущено имя функции после Function.
  • 25. Identifier redeclared <Имя>.<Имя> описано повторно, но в пределах блока имя можно описать лишь раз. Проверьте, не обозначена ли локальная переменная тем же именем, что и формальный параметр блока.
  • 26. Illegal character in input file <знак>. Запретный знак, например «русская» буква, либо вы оставили скобку }, убрав открывающую скобку {.
  • 27. Illegal type in Read/Readln (Write/Writeln) statement. Элемент запрещенного типа в списке ввода/вывода.
  • 28. Incompatible types <указание типов>. Несоответствие типов по присваиванию или типов операндов одной операции. Сообщение выдается и при неверном использовании структур. Например, z — запись, ошибочно записано присваивание z:= 0 (работать надо с полями записи).
  • 29. Invalid function result type. Недопустимый тип результата функции.
  • 30. Label already defined: <Метка>. <Метка> уже помечает другой оператор.
  • 31. Left side cannot be assigned to. He может быть такой левой части в присваивании. Примеры: попытка присвоить значение файловой переменной, присвоение значения формальному параметру-константе.
  • 32. Line too long. В строке программного текста больше 255 знаков.
  • 33. Low bound exceeds high bound. Нижняя граница превышает верхнюю.
  • 34. Missing operator or semicolon.Пропуск операции (например перед скобкой) или пропуск точки с запятой. При пропуске ‘;’ маркер ошибки стоит на очередном предложении (объявлении или операторе).
  • 35. Missing parameter type. He указан тип формального параметра-значения или параметра процедурного типа.
  • 36. Not enough actual parameters. He хватает фактических параметров.
  • 37. Need to specify at least one dimension … Нужно задавать в операторе SetLength хотя бы один размер динамического массива.
  • 38. Number of elements differs from declaration. Число элементов в структурной константе не соответствует ее описанию.
  • 39. Operator not applicable to this operand type. Операция не применима к операндам данного типа. Например: ‘А’ or ‘В’; ‘Text1’* ‘Text2’.
  • 40. Order of fields in record constant differs from declaration. Порядок полей в записи-константе не соответствует описанию записи.
  • 41. Ordinal type required. Требуется порядковый тип (например, в индексе).
  • 42. Out of memory. Компилятору не хватает памяти.
  • 43. Statement expected but <Что-то> found. В этом месте должен стоять оператор. Сообщение выдается во всех случаях, когда в тело блока или секцию инициализации ошибочно помещают описание (<Что-то>). Ошибочная форма обращения к процедуре Procedure <Имя> или к функции Function <Имя> также вызывает сообщение.
  • 44. Sets may have at most 256 elements. Множество (тип Set) не может содержать более 256 элементов.
  • 45. Slice standard function only allowed as open array argument. Функцию Slice можно использовать лишь как фактический параметр
  • 46. Statement not allowed in interface part. Предложения в секции интерфейса программного модуля недопустимы.
  • 47. Syntax error in real number. Синтаксическая ошибка в записи числа вещственного типа.
  • 48. There is no overload version of <Имя> that can be called with these arguments.Не предусмотрен перегружаемый блок <Имя>, который мог бы вызываться с таким аргументом. Пример: IntToStr(x), где х – выражение вещественного типа.
  • 49. Too many actual parameters. Фактических параметров больше, чем формальных.
  • 50. Type actual and formal var parameters must be identical. Тип фактического параметра должен быть идентичен типу формального параметра-переменной.
  • 51. Type of expression must be <Тип>. Выражение должно быть указанного типа. Например,после While и Until должно стоять логическое выражение.
  • 52. Undeclared identifier: <Имя>.Не описано <Имя>. Проверьте есть ли описание в нужном месте,нет ли описок в имени. Если указано имя компонента формы, проверьте,поместили ли компонент на данную форму.
  • 53. Unexpected end of file in comment started on line <N>. Неожиданный конец файла при незавершенном комментарии, начало комментария — в строке N.
  • 54. Unit name mismatch: <Имя>. Имя модуля ошибочно.
  • 55. Unsatisfied forward or external declaration <Имя>. Отсутствует описание блока, объявление которого было дано (заголовок в интерфейсе или в описании объектного типа, либо упреждающее описание).
  • 56. Unterminate string. He закрыта апострофом строка-константа типа string.

Рассмотрим также некоторые сообщения классов warning и hint.

  • Return value of function <Имя> might be undefined. В теле функции нет присваивания ее результата.
  • Variable <Имя> might not have been initialized. Указывает имя переменой, которой не задали значения.
  • For-Loop variable <Имя> may be undefined after loop. Попытка использования значения параметра For-цикла после завершения этого цикла.
  • Text after final ‘END.’ ignored by compiler. Текст, идущий за конечной строкой модуля, игнорируется компилятором.
  • Variable <Имя> is declared but never used in <Имя блока>. Обращает внимание на переменную <Имя>, описанную,но не нашедшую применения.
  • Value assigned to <Имя> never used. Хотя бы одно значение переменной <Имя> никак не использовано.

Несколько рекомендаций

Сосредотачивайтесь на первом сообщении компилятора. Исправление хотя бы одной ошибки и повторная компиляция может значительно уменьшить число сообщений об ошибках,поэтому не упорствуйте, стремясь понять сразу причину каждого сообщения.

Не удаляйте прежний вариант кода,пока не убедитесь,что ошибка устранена. Лучше на время закомментировать код,заключив его в скобки: { код }

Компилятор не анализирует, как будет выполняться программа, поэтому выход значения индекса из диапазона выявляет только если индекс задан константным выражением. Деление на ноль вообще пропускается, кроме оператора div, в случае если делитель — константное выражение.

Содержание

  1. Error unit1 pas 43 expected but found
  2. Error unit1 pas 43 expected but found
  3. Помогите с Delphi, не могу разобраться с ошибками
  4. Почему выдаёт ошибку? Где я накосячила? Ошибка: unit1.pas(120,5) Fatal: Syntax error, «;» expected but «ELSE» found

Error unit1 pas 43 expected but found

Screenshot_1.png
[Error] Unit1.pas(402): ‘;’ expected but ‘BEGIN’ found
[Ошибка] Unit1.pas (402): ‘;’ как ожидается, но ‘BEGIN’ найдено
Не понятно что за ошибка вроде бы все правильно!
Помогите буду очень благодарен !

Решение в следующем сообщении

[Error] Unit1.pas(402): ‘;’ expected but ‘BEGIN’ found

Ожидал точку с запятой, а наткнулся на BEGIN.

И, кстати, мне интересно, зачем у вас Block объявлен, как string, где максимальная длина — 255 символов, если вы туда помещаете результат работы метода get компонента idHTTP, что существенно будет превышать этот объём?

как string, где максимальная длина — 255 символов

Точку с запятой после Block: string поставить забыли.
Вам же написано:

Ожидал точку с запятой, а наткнулся на BEGIN.

И, кстати, мне интересно, зачем у вас Block объявлен, как string, где максимальная длина — 255 символов, если вы туда помещаете результат работы метода get компонента idHTTP, что существенно будет превышать этот объём?

Источник

Error unit1 pas 43 expected but found

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
ICQClient1: TICQClient;
procedure Button1Click(Sender: TObject);
procedure ICQClient1Login(Sender: TObject);
procedure ICQClient1MsgAck(Sender: TObject; UIN: String; ID: Word);
private
< Private declarations >
public
< Public declarations >
end;

var
Form1: TForm1;

procedure TForm1.Button1Click(Sender: TObject);
begin
ICQClient1.UIN:=номер аськи; //Номер аськи с кторой отсылаем
ICQClient1.Password:=’пароль’; //пароль той аськи
icqclient1.Login(); //конект
end;

procedure TForm1.ICQClient1Login(Sender: TObject);
begin
var S: string; //Например объяви сперва такую переменную

skycar Дата: Воскресенье, 05.02.2012, 21:07 | Сообщение # 4

Нельзя объявлять переменные внутри процедуры или функции после begin, перенеси её объявление ДО ключевого слова begin
z1pp0 Дата: Воскресенье, 05.02.2012, 21:11 | Сообщение # 5

S:=Edit1.Text + ‘;’ + Edit2.Text + ‘;’+ Edit3.Text;
теперь в этом беда?
skycar Дата: Воскресенье, 05.02.2012, 21:14 | Сообщение # 6

Добавлено (05.02.2012, 21:14)
———————————————
Да вроде бы всё правильно. Запомни, что переменные и константы можно объявлять только вне пределов begin. end

z1pp0 Дата: Воскресенье, 05.02.2012, 21:18 | Сообщение # 7

[Ошибка] Unit1.pas(41): Identifier redeclared: ‘S’
[Ошибка] Unit1.pas(41): ‘,’ or ‘:’ expected but ‘+’ found
[Ошибка] Unit1.pas(41): ‘,’ or ‘:’ expected but ‘.’ found
[Ошибка] Unit1.pas(41): ‘,’ or ‘:’ expected but ‘.’ found
[Ошибка] Unit1.pas(42): Type expected but ‘BEGIN’ found
[Фатальная ошибка] Project1.dpr(5): Could not compile used unit ‘Unit1.pas’

_______________________________________________
код
unit Unit1;

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
ICQClient1: TICQClient;
procedure Button1Click(Sender: TObject);
procedure ICQClient1Login(Sender: TObject);
procedure ICQClient1MsgAck(Sender: TObject; UIN: String; ID: Word);
private
< Private declarations >
public
< Public declarations >
end;

var
Form1: TForm1;

procedure TForm1.Button1Click(Sender: TObject);
begin
ICQClient1.UIN:=564564153; //Íîìåð àñüêè ñ êòîðîé îòñûëàåì
ICQClient1.Password:=’qwerty’; //ïàðîëü òîé àñüêè
icqclient1.Login(); //êîíåêò
end;

procedure TForm1.ICQClient1Login(Sender: TObject);
VAR S: Integer; //Íàïðèìåð îáúÿâè ñïåðâà òàêóþ ïåðåìåííóþ
S:=Edit1.Text + ‘;’ + Edit2.Text + ‘;’+ Edit3.Text;
begin
ICQClient1.SendMessage(397706531, S);
end;

procedure TForm1.ICQClient1MsgAck(Sender: TObject; UIN: String; ID: Word);
begin
icqclient1.Disconnect; //îòêëþ÷àåìñÿ îò àñüêè
end;

Источник

Помогите с Delphi, не могу разобраться с ошибками

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

type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Label1: TLabel;
Label2: TLabel;

procedure Button1Click(Sender: TObject);

var
Form1: TForm1;
<$R *.dfm>
implementation

procedure TForm1.Button1Click(Sender: TObject);
var
summ,n:Integer;
x,z,y:Integer;
begin
n:=0;
summ:=1000;

randomize;
x:=random(4)+1;
if x=1 then
Image1.Picture.LoadFromFile(‘bar.bmp’);
if x=2 then
Image1.Picture.LoadFromFile(‘bill.bmp’);
if x=3 then
Image1.Picture.LoadFromFile(‘lemon.bmp’);
if x=4 then
Image1.Picture.LoadFromFile(‘melon.bmp’);
y:=random(4)+1;
if y=1 then
Image2.Picture.LoadFromFile(‘bar.bmp’);
if y=2 then
Image2.Picture.LoadFromFile(‘bill.bmp’);
if y=3 then
Image2.Picture.LoadFromFile(‘lemon.bmp’);
if y=4 then
Image2.Picture.LoadFromFile(‘melon.bmp’);
z:=random(4)+1;
if z=1 then
Image3.Picture.LoadFromFile(‘bar.bmp’);
if z=2 then
Image3.Picture.LoadFromFile(‘bill.bmp’);
if z=3 then
Image3.Picture.LoadFromFile(‘lemon.bmp’);
if z=4 then
Image3.Picture.LoadFromFile(‘melon.bmp’);
if ((x=z) and (x=y) and (y=z)) then
begin
summ:=summ+5000
end
else
if (x=z) or (x=y) or(y=z) then
begin
summ:=summ+500;
end
else
summ:=summ-100;
Label1.Caption :=’У вас на счету ‘+ IntToStr ( summ )+ ‘ долларов’ ;
n:=n+1;
Label2.Caption:=’ Количество игр : ‘+IntToStr(n);
if n=10 then
showmessage(‘Игра окончена, вы заработали ‘+ IntToStr(summ)+’ долларов’);

[Error] Unit1.pas(102): Declaration expected but end of file found
[Fatal Error] Project1.dpr(5): Could not compile used unit ‘Unit1.pas’

Источник

Почему выдаёт ошибку? Где я накосячила? Ошибка: unit1.pas(120,5) Fatal: Syntax error, «;» expected but «ELSE» found

procedure TForm1.RadioButton1Change(Sender: TObject);
begin
if radiobutton1.checked then
begin
edit1.text := IntToStr(Bin2Dec(edit1.text));
CS := 10;
s:=edit1.text
end;
else begin
edit1.text := IntToStr(Oct2Dec(edit1.text));
CS := 10;
s:=edit1.text;

Button1.Enabled:=True;
Button2.Enabled:=True;
Button3.Enabled:=True;
Button4.Enabled:=True;
Button5.Enabled:=True;
Button6.Enabled:=True;
Button7.Enabled:=True;
Button8.Enabled:=True;
Button9.Enabled:=True;
Button10.Enabled:=True;
Button11.Enabled:=True;
Button12.Enabled:=True;
Button13.Enabled:=True;
Button15.Enabled:=True;
Button16.Enabled:=True;
Button17.Enabled:=True;
Button18.Enabled:=True;
Button14.Enabled:=True;
Button19.Enabled:=True;
Button20.Enabled:=True;
Button21.Enabled:=True;
Button22.Enabled:=True;
Button23.Enabled:=True;
end;

—-исходный кусок ————
CS := 10;
s:=edit1.text
end;
else begin
————неправильно, д. б. так ——————-
CS := 10;
s:=edit1.text;
end
else begin

З. Ы. внимательнее с синтаксисом. лучше код форматировать отступами, вроде так:
begin
begin
.
end;
end;
сразу ясно какой энд какому бегину принадлежит )))

Источник

Adblock
detector

  • Печать

Страницы: [1]   Вниз

Тема: Помогите зеленому с паскалем.  (Прочитано 4165 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
wannabebrucelee

В общем в универе ща паскаль проходят, хочу познать его на уровне решения лаб :), но есть проблема. У меня чёт не получается настоить инструменталий или я чёто не то делаю.
В общем ubuntu 9.10,  на неё поставил Lazarus.
В source editor пишу:

program hello;
var
   i;
begin
 i := 0;
WriteLn(i);
Write (‘Hello’);
ReadLn;
end.

Потом нажимаю на зелёную стрелку и вылазит сообщение:   unit1.pas(1,1) Fatal: Syntax error, «UNIT» expected but «PROGRAM» found

Что я делаю не так ( чую, что я всё делаю не так…),  Но просто никогда не пользовался подобными программами. Я просто боле мене знаком с вебом(php, css) и там всё совсем по другому.
В общем помогите глупому быдлокодеру разобраться с инструменталием.


Оффлайн
MaSsoL

Может тип переменной объявить?


Оффлайн
jef


Оффлайн
wannabebrucelee

program hello;
var
i: Word;
begin
i:= 0;
WriteLn(i);
Write(‘Hello’);
ReadLn;
end.           

вроде так.
Так?)
Ну это всё тоже самое выдаёт и получается.


Оффлайн
wl

Учите Паскаль, все же придется это сделать.
Разберитесь чем unit отличается от program.

unit1.pas(1,1) Fatal: Syntax error, «UNIT» expected but «PROGRAM» found

unit (модуль) — это библиотека функций и классов, а program — это программа.
Модулей в программе может быть много, но точка входа в исполняемый код всего одна, и она в программе.

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

Возможно, лазарус — это стрельба из пушки по воробьям, и в Вашем случае достаточно будет free pascal и текстового редактора с подсветкой синтаксиса.

На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, «Гамлет», вольный перевод)


Оффлайн
wannabebrucelee

А как free pascal установить? Просто через поиски выдаёт на лазарус в основном и на ссылки, где я мало чё понимаю. И блокнот с подстветкой синстаксиса как установить? Пожалуйста,  направьте на путь истинный.


Оффлайн
Protopopulus

Синтаксис подсвечивается в стандартном gedit.
Установить — sudo apt-get install fpc (в терминале)

Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus


Оффлайн
wannabebrucelee

rm -rf ~/fpcinstall
mkdir ~/fpcinstall
cd ~/fpcinstall
wget ftp://ftp.chg.ru/pub/lang/pascal/fpc/dist/2.4.0/i386-linux/deb/*.deb
dpkg-scanpackages ./ | gzip -c9 > Packages.gz
grep «deb file:///$HOME/fpcinstall/ /» /etc/apt/sources.list || sudo echo «deb file:///$HOME/fpcinstall/ /» >> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install fpc

Я вот чё в нете ща нашёл, и установил, это нормально? Я ничё не наворочил?
Ну вот я пишу код в gedit  а потом куда и что мне сохранять? в каком формате? И как выводить результат работы прграммы?


Оффлайн
Protopopulus

Нормально все установил, молодец.

А по поводу написания… Сохраняешь в любой текстовый (plain-text) документ, можешь даже с расширением pas. А потом с терминала компилякаешь его:
fpc -TLINUX /path/to_document
Потом запускаешь:
/path_to/program
Программа будет иметь название исходного файла минус расширение .pas и лежать в той же директории, что и исходник.

Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus


Оффлайн
wannabebrucelee

спасибо, пока вроде всё работает, ну я ещё обращусь, если чё)


  • Печать

Страницы: [1]   Вверх

INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Contact US

Thanks. We have received your request and will respond promptly.

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!

  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It’s Free!

*Tek-Tips’s functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Urgent help on who to coùmunicate to external application

Urgent help on who to coùmunicate to external application

(OP)

26 Sep 15 20:33

Hi all:

I have imported a library of a software to delphi7 , I have got a file which called WINFIOLLib_TLB.pas.which contain a procedure and interface .

in order to comunicate to that sofware I have found this code on the net but it doesen’t work properly .

the first fault I got is ‘:’ expected but ‘=’ found on TForm1 = class(TForm).

CODE —>

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

type
TWFEvent = class (TInterfacedObject, IWFEvent)

  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormDblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Notify(event: SYSINT; const text: WideString); safecall;

  end;

var
  Form1: TForm1;
  WinFIOL_Application1: TWinFIOL_Application;



implementation

{$R *.dfm}

procedure TWFEvent.Notify(event: SYSINT; const text: WideString); safecall;
begin;
Form1.Memo1.Lines.Add(IntToStr (Event));
Form1.Memo1.Lines.Add(String (Text));
procedure TForm1.FormDblClick(Sender: TObject);
Var
Ch: IWFChannel;
Event: TWFEvent;
begin
Ch := WinFiol_Application1.GetChannelPointer(WinFiol_Application1.GetCurrentChannel);
WinFiol_Application1.GetCurrentChannel <> 0
Event := TWFEvent.Create; //
EMask := WFEVENTMASK_ALL; //
Ch.Advise(Channel.Event, EMask);


end;



procedure TForm1.FormCreate(Sender: TObject);
begin
WinFIOL_Application1 := TWinFIOL_Application.Create(self);

end;

procedure TForm1.Button1Click(Sender: TObject);
Var
Chn_Name: String;
New_Ch: Integer;

begin
OpenDialog1.InitialDir := 'C:Program FilesElement ManagementChnFiles';
If OpenDialog1.Execute Then Chn_Name := OpenDialog1.FileName Else Exit;
WinFIOL_Application1.OpenChannelFile(Chn_Name, 0, New_Ch);
WinFiol_Application1.GetChannelPointer(New_Ch).SetReadBuffer(512, 4);

end;
end. 

NB: all fault code are summurized bellow:

[Error] Unit1.pas(25): Undeclared identifier: ‘TWinFIOL_Application’
[Error] Unit1.pas(33): ‘;’ expected but ‘.’ found
[Error] Unit1.pas(33): ‘=’ expected but ‘)’ found
[Error] Unit1.pas(33): ‘=’ expected but ‘;’ found
[Error] Unit1.pas(34): Expression expected but ‘BEGIN’ found
[Error] Unit1.pas(35): Undeclared identifier: ‘Event’
[Error] Unit1.pas(37): Statement expected but ‘PROCEDURE’ found
[Error] Unit1.pas(39): Undeclared identifier: ‘IWFChannel’
[Error] Unit1.pas(40): Constant or type identifier expected

what is the wrong on this code ?

thanks for your help and suggestions

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Join Tek-Tips® Today!

Join your peers on the Internet’s largest technical computer professional community.
It’s easy to join and it’s free.

Here’s Why Members Love Tek-Tips Forums:

  • Tek-Tips ForumsTalk To Other Members
  • Notification Of Responses To Questions
  • Favorite Forums One Click Access
  • Keyword Search Of All Posts, And More…

Register now while it’s still free!

Already a member? Close this window and log in.

Join Us             Close

Приступим к обработке событий. Начнем
с нажатия кнопки Вычислить.
Активизируйте кнопку, с которой будем
работать, затем перейдите к окнуObjectInspectorи переключитесь на вкладкуEvents(события). На ней вы обнаружите
список всех возможных событий для
активного компонента (в данном случае
кнопки). Нас интересует событиеOnClick,
возникающее при нажатии кнопки. Чтобы
запрограммировать обработчик этого
события, сделайте двойной щелчок мыши
в поле значения. Появится окно редактора
кода с заготовкой для нашего обработчика.

(Рис.
4.1) Окно редактора

Между procedureиbeginвпишите объявления переменных, а междуbeginиendалгоритм вычисления квадратного
уравнения.

procedure
TForm1.Button1Click(Sender: TObject);

var

a,
b, c: Integer;

d,
x1, x2: Real;

begin

a
:= StrToInt(Edit1.Text);

b
:= StrToInt(Edit2.Text);

c
:= StrToInt(Edit3.Text);

d := sqr(b)
— 4 * a * c;

if
d < 0 then
begin

Edit4.Text := ‘Корней нет’;

Edit5.Text := ‘Корней нет’;

end
else
begin

x1 := (-b — sqrt(d)) / (2 * a);

Edit4.Text := FloatToStr(x1);

x2 := (-b + sqrt(d)) / (2 * a);

Edit5.Text
:= FloatToStr(x2);

end;

end;

При кодировании исходного кода Delphiбудет подсказывать, и помогать выбрать
правильный метод или свойство из списка
(функция завершения кода). Для активации
списка просто введите имя объекта,
напримерEdit1, и
поставьте точку, для принудительного
вывода списка нажмитеCtrl+пробел,
для удаления, если он не нуженEsc.

(Рис.
4.2) Функция завершения кода

(Рис
4.3) Общий вид

5. Компиляция и исправление синтаксических ошибок

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

Ошибки, которые могут быть в программе,
принято делить на три группы:

  • синтаксические;

  • ошибки времени выполнения;

  • алгоритмические.

Синтаксические ошибки, их также называют
ошибками времени компиляции (Compile-time
error), наиболее легко устранимы. Их
обнаруживает компилятор, а программисту
остается только внести изменения в
текст программы и выполнить повторную
компиляцию.

(Рис
5.1) Ошибка при компиляции

Наиболее часто встречающиеся синтаксические
ошибки:

[Error] Unit1.pas(42):
‘:=’
expected but
‘=’
found— Вместо
ожидаемого символа (или набора символов,
например :=) в тексте программы встречается
иное.

[Error] Unit1.pas(43): Missing operator or
semicolon
– пропущена
точка с
запятой — ;

[Error] Unit1.pas(49): Undeclared identifier:
‘x’ – Не
объявленный идентификатор.
Проверьте правильность имени
идентификатора. Возможно вы пропустили
какой-нибудь символ напримерx1.

[Error] Unit1.pas(57):
‘;’
expected but
‘.’
found– Неправильно
составлены блоки заканчивающиеся наend. Часто ошибка встречается
в циклах.

[Error] Unit1.pas(51): ‘)’ expected but ‘;’
found
– Пропущена
закрывающаяся скобка.
Ошибка встречается при вызове
методов, процедур или функций с
параметрами. Внимательно проверьте
количество открывающихся и закрывающихся
скобок должно быть одинаковым.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Понравилась статья? Поделить с друзьями:
  • Error unexpectedly disconnected from boot status daemon
  • Error unexpected tab character
  • Error unexpected string concatenation prefer template
  • Error unexpected require global require
  • Error unexpected rcode refused