|
Вопрос # 5 248/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты!
Я пытаюсь программировать простейший графический редактор, типа pаint.
Но в ходе работы я сталкиваюсь с одной и той же проблемой:
[Error] Unit1.pas(144): Statement expected but 'PROCEDURE' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Я не знаю уже как её исправить... в приложении выкладываю код.
Проблемной процедурой является:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
Буду очень признательна, если сможете мне помочь =-)
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, ColorGrd, ExtDlgs, ExtCtrls, Buttons, StdCtrls, Menus;
-
- type
- TForm1 = class(TForm)
- MainMenu1: TMainMenu;
- N1: TMenuItem;
- N2: TMenuItem;
- N3: TMenuItem;
- N4: TMenuItem;
- N5: TMenuItem;
- Panel1: TPanel;
- Panel2: TPanel;
- Label1: TLabel;
- Label2: TLabel;
- SpeedButton1: TSpeedButton;
- SpeedButton2: TSpeedButton;
- SpeedButton3: TSpeedButton;
- SpeedButton4: TSpeedButton;
- SpeedButton5: TSpeedButton;
- SpeedButton6: TSpeedButton;
- SpeedButton7: TSpeedButton;
- SpeedButton8: TSpeedButton;
- Image1: TImage;
- OpenPictureDialog1: TOpenPictureDialog;
- SavePictureDialog1: TSavePictureDialog;
- ColorDialog1: TColorDialog;
- ColorGrid1: TColorGrid;
- Edit1: TEdit;
- Panel3: TPanel;
- Label3: TLabel;
- Label4: TLabel;
- Label5: TLabel;
- procedure FormCreate(Sender: TObject);
- procedure N4Click(Sender: TObject);
- procedure N5Click(Sender: TObject);
- procedure Panel1DblClick(Sender: TObject);
- procedure Label1DblClick(Sender: TObject);
- procedure ColorGrid1Change(Sender: TObject);
- procedure N2Click(Sender: TObject);
- procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure SpeedButton1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
- cl: TColor;
- drag: boolean = false;
- rect1: boolean = false;
- crect1: boolean = false;
- circl1: boolean = false;
- line1: boolean = false;
- pen1: boolean = false;
- cpen1: boolean = false;
- text1: boolean = false;
- brush1: boolean = false;
- X1, Y1, X2, Y2: integer;
- brsize: byte;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- image1.Canvas.Brush.Color:=clWhite;
- image1.Canvas.FillRect(ClientRect);
- end;
-
- procedure TForm1.N4Click(Sender: TObject);
- begin
- if OpenPictureDialog1.Execute then
- image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
- end;
-
- procedure TForm1.N5Click(Sender: TObject);
- begin
- if SavePictureDialog1.Execute then
- image1.Picture.SaveToFile(SavePictureDialog1.FileName);
- end;
-
- procedure TForm1.Panel1DblClick(Sender: TObject);
- begin
- if ColorDialog1.Execute then
- cl:=ColorDialog1.Color;
- end;
-
- procedure TForm1.Label1DblClick(Sender: TObject);
- begin
- if ColorDialog1.Execute then
- cl:=ColorDialog1.Color;
- end;
-
- procedure TForm1.ColorGrid1Change(Sender: TObject);
- begin
- cl:=ColorGrid1.ForegroundColor;
- end;
-
- procedure TForm1.N2Click(Sender: TObject);
- begin
- image1.Canvas.Brush.Color:=clWhite;
- image1.Canvas.FillRect(ClientRect);
- rect1:= false;
- crect1:= false;
- circl1:= false;
- line1:= false;
- pen1:= false;
- cpen1:= false;
- text1:= false;
- brush1:= false;
- end;
-
- procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if pen1 then
- begin
- image1.Canvas.Pen.Color:=cl;
- drag:=true;
- image1.Canvas.MoveTo(X,Y);
- end;
- if brush1 then
- begin
- with image1.Canvas do begin
- brush.Color:=cl;
- floodfill(X,Y,Pixels[X,Y],fsSurface);
- end;
- end;
-
- procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- begin
- if pen1 then
- if drag then image1.Canvas.LineTo(X,Y);
- end;
-
- procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- drag:= false;
- end;
-
- procedure TForm1.SpeedButton1Click(Sender: TObject);
- begin
- rect1:= false;
- crect1:= false;
- circl1:= false;
- line1:= false;
- pen1:= true;
- cpen1:= false;
- text1:= false;
- brush1:= false;
- end;
-
- end.
 |
Вопрос задала: Haenta (статус: Посетитель)
Вопрос отправлен: 1 мая 2011, 21:56
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: Шичко Игорь
Здравствуйте, Виктория!
Не хватает еще одного end; после 140 строчки
...
if brush1 then
begin
with image1.Canvas do
begin
brush.Color:=cl;
floodfill(X,Y,Pixels[X,Y],fsSurface);
end;
end;
...
В виде рекомендации: когда пишете код, то поставив begin, сразу ставьте end;, а между ними код.
 |
Ответ отправил: Шичко Игорь (статус: 9-ый класс)
Время отправки: 1 мая 2011, 22:50
Оценка за ответ: 5
Комментарий к оценке: спасибо))
теперь только так))
|
Мини-форум вопроса
Всего сообщений: 11; последнее сообщение — 2 мая 2011, 17:00; участников в обсуждении: 5.
|
Drinkenz (статус: 1-ый класс), 1 мая 2011, 22:17 [#1]:
137 строку удалить, она лишняя
|
|
Haenta (статус: Посетитель), 1 мая 2011, 22:25 [#2]:
Она не может быть лишней.
это часть операторных скобок.
А кофе на клавиатуру тоже вирус пролил?
|
|
Шичко Игорь (статус: 9-ый класс), 1 мая 2011, 22:30 [#3]:
После 140 строчки нужен еще один end;
|
|
Шичко Игорь (статус: 9-ый класс), 1 мая 2011, 22:31 [#4]:
if brush1 then
begin
with image1.Canvas do
begin
brush.Color:=cl;
floodfill(X,Y,Pixels[X,Y],fsSurface);
end;
end;
|
|
Haenta (статус: Посетитель), 1 мая 2011, 22:36 [#5]:
Спасибо =-))
Программа компилируется)) ура)))
а вот эта проблема была только из-за отсутствия end?
просто мы полтора часа вместе с преподавателем пыталась выяснить ошибку, но так и не смогли.
А кофе на клавиатуру тоже вирус пролил?
|
1 мая 2011, 22:54: Статус вопроса изменён на решённый (изменил автор вопроса — Haenta)
|
Толяныч (статус: 4-ый класс), 1 мая 2011, 23:00 [#6]:
Виктория:
> просто мы полтора часа вместе с преподавателем пыталась
> выяснить ошибку, но так и не смогли.
Невыдуманная история
- Маяковский, мы вчера с приятелем читали Ваши стихи и ничего в них не поняли.
- Надо было читать с умным приятелем.
Когда в 'С' я попадал в такую ситуацию со скобками {} , разозлился и за 10 минут написал прогу, которая шерстит мой исходник и находит непарные скобки. Иногда очень помогала.
|
|
Haenta (статус: Посетитель), 1 мая 2011, 23:06 [#7]:
Хех)))
намёк поняла))
просто думали, что дело не в begin и end.
и почему-то мне казалось, что Делфи сам пишет недостающие скобки
А кофе на клавиатуру тоже вирус пролил?
|
|
min@y™ (статус: Доктор наук), 2 мая 2011, 10:52 [#8]:
Цитата (Haenta):
и почему-то мне казалось, что Делфи сам пишет недостающие скобки
Ога! А если чётко и с выражением в монитор произнести свою фамилию, то delphi сама весь код напишет. Остаётся только сходить в кассу и получить зарплату.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Haenta (статус: Посетитель), 2 мая 2011, 16:45 [#9]:
min@y™:
> А если чётко и с выражением в монитор произнести свою фамилию, то delphi сама весь код напишет.
хаха)))
это было бы идеально))))
А кофе на клавиатуру тоже вирус пролил?
|
|
min@y™ (статус: Доктор наук), 2 мая 2011, 16:54 [#10]:
Цитата (Haenta):
хаха))) это было бы идеально))))
Тогда бы труд программистов обесценился бы до нуля.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Haenta (статус: Посетитель), 2 мая 2011, 17:00 [#11]:
min@y™:
> Тогда бы труд программистов обесценился бы до нуля.
не думаю =-)))
ведь произносить свою фамилию с выражением и именно в монитор, тоже уметь надо )
А кофе на клавиатуру тоже вирус пролил?
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|