Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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);

Буду очень признательна, если сможете мне помочь =-)

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, ColorGrd, ExtDlgs, ExtCtrls, Buttons, StdCtrls, Menus;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. MainMenu1: TMainMenu;
  12. N1: TMenuItem;
  13. N2: TMenuItem;
  14. N3: TMenuItem;
  15. N4: TMenuItem;
  16. N5: TMenuItem;
  17. Panel1: TPanel;
  18. Panel2: TPanel;
  19. Label1: TLabel;
  20. Label2: TLabel;
  21. SpeedButton1: TSpeedButton;
  22. SpeedButton2: TSpeedButton;
  23. SpeedButton3: TSpeedButton;
  24. SpeedButton4: TSpeedButton;
  25. SpeedButton5: TSpeedButton;
  26. SpeedButton6: TSpeedButton;
  27. SpeedButton7: TSpeedButton;
  28. SpeedButton8: TSpeedButton;
  29. Image1: TImage;
  30. OpenPictureDialog1: TOpenPictureDialog;
  31. SavePictureDialog1: TSavePictureDialog;
  32. ColorDialog1: TColorDialog;
  33. ColorGrid1: TColorGrid;
  34. Edit1: TEdit;
  35. Panel3: TPanel;
  36. Label3: TLabel;
  37. Label4: TLabel;
  38. Label5: TLabel;
  39. procedure FormCreate(Sender: TObject);
  40. procedure N4Click(Sender: TObject);
  41. procedure N5Click(Sender: TObject);
  42. procedure Panel1DblClick(Sender: TObject);
  43. procedure Label1DblClick(Sender: TObject);
  44. procedure ColorGrid1Change(Sender: TObject);
  45. procedure N2Click(Sender: TObject);
  46. procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
  47. Shift: TShiftState; X, Y: Integer);
  48. procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  49. Y: Integer);
  50. procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
  51. Shift: TShiftState; X, Y: Integer);
  52. procedure SpeedButton1Click(Sender: TObject);
  53. private
  54. { Private declarations }
  55. public
  56. { Public declarations }
  57. end;
  58.  
  59. var
  60. Form1: TForm1;
  61. cl: TColor;
  62. drag: boolean = false;
  63. rect1: boolean = false;
  64. crect1: boolean = false;
  65. circl1: boolean = false;
  66. line1: boolean = false;
  67. pen1: boolean = false;
  68. cpen1: boolean = false;
  69. text1: boolean = false;
  70. brush1: boolean = false;
  71. X1, Y1, X2, Y2: integer;
  72. brsize: byte;
  73.  
  74. implementation
  75.  
  76. {$R *.dfm}
  77.  
  78. procedure TForm1.FormCreate(Sender: TObject);
  79. begin
  80. image1.Canvas.Brush.Color:=clWhite;
  81. image1.Canvas.FillRect(ClientRect);
  82. end;
  83.  
  84. procedure TForm1.N4Click(Sender: TObject);
  85. begin
  86. if OpenPictureDialog1.Execute then
  87. image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  88. end;
  89.  
  90. procedure TForm1.N5Click(Sender: TObject);
  91. begin
  92. if SavePictureDialog1.Execute then
  93. image1.Picture.SaveToFile(SavePictureDialog1.FileName);
  94. end;
  95.  
  96. procedure TForm1.Panel1DblClick(Sender: TObject);
  97. begin
  98. if ColorDialog1.Execute then
  99. cl:=ColorDialog1.Color;
  100. end;
  101.  
  102. procedure TForm1.Label1DblClick(Sender: TObject);
  103. begin
  104. if ColorDialog1.Execute then
  105. cl:=ColorDialog1.Color;
  106. end;
  107.  
  108. procedure TForm1.ColorGrid1Change(Sender: TObject);
  109. begin
  110. cl:=ColorGrid1.ForegroundColor;
  111. end;
  112.  
  113. procedure TForm1.N2Click(Sender: TObject);
  114. begin
  115. image1.Canvas.Brush.Color:=clWhite;
  116. image1.Canvas.FillRect(ClientRect);
  117. rect1:= false;
  118. crect1:= false;
  119. circl1:= false;
  120. line1:= false;
  121. pen1:= false;
  122. cpen1:= false;
  123. text1:= false;
  124. brush1:= false;
  125. end;
  126.  
  127. procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  128. Shift: TShiftState; X, Y: Integer);
  129. begin
  130. if pen1 then
  131. begin
  132. image1.Canvas.Pen.Color:=cl;
  133. drag:=true;
  134. image1.Canvas.MoveTo(X,Y);
  135. end;
  136. if brush1 then
  137. begin
  138. with image1.Canvas do begin
  139. brush.Color:=cl;
  140. floodfill(X,Y,Pixels[X,Y],fsSurface);
  141. end;
  142. end;
  143.  
  144. procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  145. Y: Integer);
  146. begin
  147. if pen1 then
  148. if drag then image1.Canvas.LineTo(X,Y);
  149. end;
  150.  
  151. procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  152. Shift: TShiftState; X, Y: Integer);
  153. begin
  154. drag:= false;
  155. end;
  156.  
  157. procedure TForm1.SpeedButton1Click(Sender: TObject);
  158. begin
  159. rect1:= false;
  160. crect1:= false;
  161. circl1:= false;
  162. line1:= false;
  163. pen1:= true;
  164. cpen1:= false;
  165. text1:= false;
  166. brush1:= false;
  167. end;
  168.  
  169. end.


Haenta Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задала: 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

Drinkenz (статус: 1-ый класс), 1 мая 2011, 22:17 [#1]:

137 строку удалить, она лишняя
Haenta

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

Haenta (статус: Посетитель), 1 мая 2011, 22:36 [#5]:

Спасибо =-))
Программа компилируется)) ура)))

а вот эта проблема была только из-за отсутствия end?

просто мы полтора часа вместе с преподавателем пыталась выяснить ошибку, но так и не смогли.
А кофе на клавиатуру тоже вирус пролил?

1 мая 2011, 22:54: Статус вопроса изменён на решённый (изменил автор вопроса — Haenta)

Толяныч

Толяныч (статус: 4-ый класс), 1 мая 2011, 23:00 [#6]:

Виктория:
> просто мы полтора часа вместе с преподавателем пыталась
> выяснить ошибку, но так и не смогли.

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

Когда в 'С' я попадал в такую ситуацию со скобками {} , разозлился и за 10 минут написал прогу, которая шерстит мой исходник и находит непарные скобки. Иногда очень помогала.
Haenta

Haenta (статус: Посетитель), 1 мая 2011, 23:06 [#7]:

Хех)))
намёк поняла))

просто думали, что дело не в begin и end.
и почему-то мне казалось, что Делфи сам пишет недостающие скобки
А кофе на клавиатуру тоже вирус пролил?
min@y™

min@y™ (статус: Доктор наук), 2 мая 2011, 10:52 [#8]:

Цитата (Haenta):

и почему-то мне казалось, что Делфи сам пишет недостающие скобки

Ога! А если чётко и с выражением в монитор произнести свою фамилию, то delphi сама весь код напишет. :) Остаётся только сходить в кассу и получить зарплату.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Haenta

Haenta (статус: Посетитель), 2 мая 2011, 16:45 [#9]:

min@y™:
> А если чётко и с выражением в монитор произнести свою фамилию, то delphi сама весь код напишет.

хаха)))
это было бы идеально))))
А кофе на клавиатуру тоже вирус пролил?
min@y™

min@y™ (статус: Доктор наук), 2 мая 2011, 16:54 [#10]:

Цитата (Haenta):

хаха))) это было бы идеально))))

Тогда бы труд программистов обесценился бы до нуля.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Haenta

Haenta (статус: Посетитель), 2 мая 2011, 17:00 [#11]:

min@y™:
> Тогда бы труд программистов обесценился бы до нуля.

не думаю =-)))
ведь произносить свою фамилию с выражением и именно в монитор, тоже уметь надо ;-))
А кофе на клавиатуру тоже вирус пролил?

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:44
Выполнено за 0.02 сек.