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 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); //тут ошибку выдает private { Private declarations } public { Public declarations } end; var Form1: TForm1; vopros: array[1..7] of string = ('Компонент, который управляет программой', 'Компонент в котором отображается текстовая информация', 'Это назначение есть у всех компонентов, его свойство Font', 'Компонент, предназначенный для выбора/установления функции', 'Color-это..?', 'Набор однородных элементов, расположенных друг под другом последовательно - это..?', 'Что за назначение у компонента String Grid со свойством Salse?'); mas: array[1..7] of string = ('кнопка', 'таблица', 'шрифт', 'флажок', 'цвет', 'список', 'ячейки'); //заполненны сразу массив GroupBox: TGroupBox; //динамическая GroupBox i: Byte; //для цикла slmas: Integer; //слово, то есть случайный элемен массива pvsyg: Integer; //правильно угаданные все (так как буквы повторятся в слове) kolp: Byte; //для кол-ва попыток implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin // выбор случайного слова (случайного элемента массива) slmas := 1 + Random(7); Label1.Caption := 'Допустимо не более 5 ошибок )'; // обнулим переменные что для подсчета pvsyg := 0; kolp:= 0; GroupBox := TGroupBox.Create(Self); with GroupBox do begin Name := 'GroupBox'; Parent := Self; Left := 10; Top := 10; Width := 438; Height := 80; Font.Size := 10; Caption := 'Компьютер загадал слово из ' + IntToStr(Length(mas[slmas])) + ' букв'; end; LabelVopros.Caption := vopros[slmas]; for i := 1 to Length(mas[slmas]) do with TPanel.Create(Self) do begin Left := 40 * i; Top := 24; Width := 35; Height := 41; Font.Size := 16; Visible := False; //скроем пока на время Caption := mas[slmas][i]; //раздадим слово по буквам из массива Parent := GroupBox; end; for i := 1 to Length(mas[slmas]) do with TBevel.Create(Self) do begin Left := 40 * i; Top := 24; Width := 35; Height := 41; Style := bsRaised; Parent := GroupBox; end; //============================================================================== // Восстановим в цикле все кнопки для нажатий //============================================================================== for i := 0 to ComponentCount - 1 do if Components[i] is TButton then (Components[i] as TButton).Enabled := True; // а эту кнопку наоборот заблокируем Button1.Enabled := False; //отключим на время end; procedure TForm1.Button2Click(Sender: TObject); var i: integer; f: boolean; begin //============================================================================== // Все обработчики кнопок на Button2 кнопке // //============================================================================== f := False; for i := 0 to ComponentCount - 1 do if Components[i] is TPanel then if (Components[i] as TPanel).Caption = (Sender as TButton).Caption then begin (Components[i] as TPanel).Visible := True; f := True; Inc(pvsyg); //инкримент для всех букв и те что повторяются в слове тоже end; if f then Label1.Caption := 'Молодец, угадал - ' + (Sender as TButton).Caption else begin Label1.Caption := 'Буквы - ' + (Sender as TButton).Caption + ' здесь нет'; Inc(kolp); //инкримент на попытки угадать end; (Sender as TButton).Enabled := False; if pvsyg = Length(mas[slmas]) then begin Button1.Enabled := True; Button1.Caption := 'Новая игра?'; ShowMessage('Угадано! ' + mas[slmas]); //========================================================================= // Слово уже угадано в цикле заблокируем все кнопки пока они ненужны // кроме кнопки что включит игру //========================================================================= for i := 0 to ComponentCount - 1 do if Components[i] is TButton then (Components[i] as TButton).Enabled := False; Button1.Enabled := True; //а эту снова включим end; Caption := 'Открыто ' + IntToStr(pvsyg) + ' букв из ' + IntToStr(Length(mas[slmas])); if kolp = 5 then begin MessageBox(Handle, PAnsiChar( 'Вы проиграли, названо 5 неправильных букв, ' + #13#10 + 'компьютер загадал - ' + mas[slmas]), 'Справка', MB_OK + MB_ICONINFORMATION); for i := 0 to ComponentCount - 1 do if Components[i] is TButton then (Components[i] as TButton).Enabled := False; Button1.Enabled := True; //а эту снова включим Button1.Caption := 'Новая игра?'; //и переименуем Label1.Caption:= 'Для старта игры- нажмите новая игра!'; end; end; end. //удалить групбокс for i := ComponentCount - 1 downto 0 do if Components[i] is TGroupBox then Components[i].Free; //включить все кнопки for i := 0 to ComponentCount - 1 do if Components[i] is TButton then (Components[i] as TButton).Enabled := True; end; end. end; procedure TForm1.FormCreate(Sender: TObject); begin Randomize; //для рандома Button1.Click; //загрузим игру сразу при запуске Button1.Caption := 'Игра загружена!'; Button1.Enabled := False; //сменить слово нельзя end; end. |
Topic: [SOLVED] (53,12) Fatal: Syntax error, «;» expected but «identifier TFORM1» found (Read 8811 times)
Continuing my quest….
I was creating a test to see if I finally got a grip on all this. Guess not…
I didn’t change TFORM1…
-
unit UnitRecTest;
-
{$mode objfpc}{$H+}
-
interface
-
uses
-
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
-
type
-
{ TForm1 }
-
TForm1 = class(TForm)
-
Edit1: TEdit;
-
Label1: TLabel;
-
procedure Edit1Change(Sender: TObject);
-
private
-
{ private declarations }
-
public
-
{ public declarations }
-
end;
-
var
-
Form1: TForm1;
-
code_str : string[28];
-
masterrec : record
-
status : longint;
-
shortname : string[8];
-
// company : code_str;
-
address : string[28];
-
city : string[28];
-
state : string[2];
-
zip : string[10];
-
POC : string[28];
-
tele : string[18];
-
shcomp : string[28];
-
shaddr : string[28];
-
shcity : string[28];
-
shstate : string[2];
-
shzip : string[10];
-
end;
-
implementation
-
{$R *.lfm}
-
{ TForm1 }
-
begin
-
procedure TForm1.Edit1Change(Sender: TObject); // ‘TFORM’ error on this line
-
begin
-
Edit1.Text:=masterrec.shortname;
-
end;
-
masterrec.shortname := ‘Blake’;
-
end.
The compiler doesn’t like code_str, either.
Other than that, I am having fun!!
Thanks!!
« Last Edit: September 19, 2016, 10:56:49 pm by WickedDum »
Logged
Practice Safe Computing!!
Intel i5-4460K @ 3.2GHz | Win8.1 64-bit | FPC: v3.0 | Lazarus: v1.6.0
Remove the statement «begin» in line 51 and you get a bit further
Logged
Thanks, Molly.
And take that BEGIN and insert it between lines 56 and 57. It compiles! It was a basic Pascal program structure error.
But
-
Edit1.Text:=masterrec.shortname;
does not display ‘Blake’. Any idea why not?
Thanks!
Logged
Practice Safe Computing!!
Intel i5-4460K @ 3.2GHz | Win8.1 64-bit | FPC: v3.0 | Lazarus: v1.6.0
does not display ‘Blake’. Any idea why not?
Hmz, strange that it even compiles as such.
Do you mind if i don’t answer the why but, instead provide two solutions ?
Solution 1:
Add an initialization section to your unit and place the initialization of your record field(s) in there.
Solution 2:
Implement the form event .formcreate (you can use the object inspector for that, select your form and click the events tab. In there is an event named onCreate. Double click the empty event filed to automatically let Lazarus create the code for this event inside your source. In that event (between the begin/end pair) initialize your record field(s).
edit:
For more information about structural organization of a unit, please read up inside the manual or on the wiki. That will also explain the initialization section and where to place.
« Last Edit: September 19, 2016, 09:17:09 am by molly »
Logged
Hmz, strange that it even compiles as such.
It should compile! Why are you surprised that it compiles? I just think it is strange because it does not display ‘Blake’.
Do you mind if i don’t answer the why but, instead provide two solutions ?
I don’t mind…but I would like to know. I believe you are leaning toward the lack of (proper/complete?) initialization? Although, I believe masterrec.shortname is initialized…
Solution 1:
Add an initialization section to your unit and place the initialization of your record field(s) in there.If I understand you correctly, you just want me to initialize the record. There is no Pascal ‘initialization’ section, correct?
Solution 2: …select your form and click the events tab…
I just double-clicked on the form itself and the template for TForm1.FormCreate was written. Is that where you want me to initialize everything? And, in the Events section, (none), FormCreate, and EditChange1 are the only options. Which one to I select? None appear to actually do anything…
I read the reference. Thanks. (Disregard INITIALIZATION concerns.)
Any idea why the compiler doesn’t like code_str?
Thanks for your time and suggestions!
« Last Edit: September 19, 2016, 09:45:41 am by WickedDum »
Logged
Practice Safe Computing!!
Intel i5-4460K @ 3.2GHz | Win8.1 64-bit | FPC: v3.0 | Lazarus: v1.6.0
Hmz, strange that it even compiles as such.
It should compile! Why are you surprised that it compiles? I just think it is strange because it does not display ‘Blake’.
It is strange as you have some code in the middle of an implementation section. afaik it should generate an error during compilation.
Do you mind if i don’t answer the why but, instead provide two solutions ?
I don’t mind…but I would like to know. I believe you are leaning toward the lack of (proper/complete?) initialization? Although, I believe masterrec.shortname is initialized…
Because the routine that initialized the field of the record isn’t called so your record field isn’t initialized either.
Solution 1:
Add an initialization section to your unit and place the initialization of your record field(s) in there.If I understand you correctly, you just want me to initialize the record. There is no Pascal ‘initialization’ section, correct?
There is, see also the links i put up in my edited post.
Solution 2: …select your form and click the events tab…
I just double-clicked on the form itself and the template for TForm1.FormCreate was written.
Good
Is that where you want me to initialize everything?
For learning purpose and you getting familair with things, yes. Later on the initialization of such record fields should belong to an event that is properly suited. You are not able to tell yet at this point in time.
If i do something like this, i add a button on a form and place my init code inside its onclick event in order to check if everything works as expected, then when a program matures, i place that code in an event that is more suited to the program.
And, in the Events section, (none), FormCreate, and EditChange1 are the only options. Which one to I select? None appear to actually do anything…
For storing a value inside your recrod field ? If yes, then inside the FormCreate event.
« Last Edit: September 19, 2016, 09:57:59 am by molly »
Logged
Oh, and something else….
You have it programmed now that in case user types something into edit1 that the same text of that edit box is changed to that what is stored inside your record field.
That is a bit awkward to say the least. You type something and then the text you type is being replaced. Not even sure if it works that way.
Logged
Any idea why the compiler doesn’t like code_str?
No idea. what is the error that the compiler tells you when you try to compile ?
edit: i bet you get a type error ;-p
You are trying to declare the type of a record field, but instead you assign it a variable.
« Last Edit: September 19, 2016, 10:08:15 am by molly »
Logged
And here some code that shows both ways of doing intialization.
Keep in mind though that indeed the moment you type something into the edit1 that the edit field text is changed into Blake (no matter what you type).
-
unit Unit1;
-
{$mode objfpc}{$H+}
-
interface
-
uses
-
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
-
type
-
{ TForm1 }
-
TForm1 = class(TForm)
-
Edit1: TEdit;
-
Label1: TLabel;
-
procedure Edit1Change(Sender: TObject);
-
procedure FormCreate(Sender: TObject);
-
private
-
{ private declarations }
-
public
-
{ public declarations }
-
end;
-
type
-
code_str = string[28];
-
var
-
Form1: TForm1;
-
// code_str : string[28];
-
masterrec :
-
record
-
status : longint;
-
shortname : string[8];
-
company : code_str;
-
address : string[28];
-
city : string[28];
-
state : string[2];
-
zip : string[10];
-
POC : string[28];
-
tele : string[18];
-
shcomp : string[28];
-
shaddr : string[28];
-
shcity : string[28];
-
shstate : string[2];
-
shzip : string[10];
-
end;
-
implementation
-
{$R *.lfm}
-
{ TForm1 }
-
procedure TForm1.Edit1Change(Sender: TObject);
-
begin
-
Edit1.Text := masterrec.shortname;
-
Label1.Caption := masterrec.address;
-
end;
-
procedure TForm1.FormCreate(Sender: TObject);
-
begin
-
masterrec.shortname := ‘Blake’;
-
end;
-
Initialization
-
begin
-
masterrec.address := ‘Planet earth’;
-
end;
-
end.
That should compile for you.
Logged
@molly — Thank you very much for your time. I understand your posts.
As for ‘Blake’ overwriting what is entered, I intended it only as a test to see if I assigned the edit1.text correctly. It didn’t display for me so that told me I failed. But it was only there as an in-house quick little test..
Thank you for your time and assistance (and code)!!!
Logged
Practice Safe Computing!!
Intel i5-4460K @ 3.2GHz | Win8.1 64-bit | FPC: v3.0 | Lazarus: v1.6.0
Oops…
The DEN error and, when I click continue, then:
Error reading Form1.OnCreate: Invalid value for property.
« Last Edit: September 19, 2016, 11:20:10 pm by WickedDum »
Logged
Practice Safe Computing!!
Intel i5-4460K @ 3.2GHz | Win8.1 64-bit | FPC: v3.0 | Lazarus: v1.6.0
Access Violation at address при загрузке дочерней формы
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Может мой вопрос покажется «ламерским» но может кто нибудь сталкивался с такой проблемой.
… implementation uses Unit2; … procedure TForm1.CustomItem4Click(Sender: TObject); begin form2:=tform2.Create (self); end; …
то вылетают следующие ошибки
… procedure TForm2.SCButton1Click(Sender: TObject); begin close; end; procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin action:=cafree; end; procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin canclose:=true; end; … Как можно обойти данную проблему |
vladimir74 |
|
добавь еще проверку, скорее всего эта форма уже существует…
procedure TForm1.CustomItem4Click(Sender: TObject); begin if not assigned(form2) then form2:=tform2.Create (self); form2.Show(); end; … ну и закрывай ….
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; Form2 := nil; end; |
Felan |
|
А еще лучше не проверку делать, а в свойствах проекта убрать форму, которая только динамически создается/уничтожается из автосоздания. |
Demon:-) |
|
Цитата Felan @ 13.03.08, 10:12 А еще лучше не проверку делать, а в свойствах проекта убрать форму, которая только динамически создается/уничтожается из автосоздания. Это интересно как? Как можно реализовать Ваш пример. -Added 14.03.08, 08:14 Цитата vladimir74 @ 13.03.08, 07:28 добавь еще проверку, скорее всего эта форма уже существует…
procedure TForm1.CustomItem4Click(Sender: TObject); begin if not assigned(form2) then form2:=tform2.Create (self); form2.Show(); end; … ну и закрывай ….
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; Form2 := nil; end; Да странно он уже вызывает эти ошибки как в предыдущем и новую другую ошибку Ошибка: Abstract error! В чем бага не пойму Сообщение отредактировано: Demon:-) — 14.03.08, 08:15 |
vladimir74 |
|
Цитата Demon:-) @ 14.03.08, 08:03 Это интересно как? Как можно реализовать Ваш пример. зайди в файл проекта (project1.dpr) и убери от туда все Application.CreateForm(TForm2, Form2); кроме стартовой… Цитата Demon:-) @ 14.03.08, 08:03 Да странно он уже вызывает эти ошибки как в предыдущем и новую другую ошибку непонял что и где вызывает ошибки? |
Demon:-) |
|
Цитата vladimir74 @ 14.03.08, 08:29 Цитата Demon:-) @ 14.03.08, 08:03 Это интересно как? Как можно реализовать Ваш пример. зайди в файл проекта (project1.dpr) и убери от туда все Application.CreateForm(TForm2, Form2); кроме стартовой… Цитата Demon:-) @ 14.03.08, 08:03 Да странно он уже вызывает эти ошибки как в предыдущем и новую другую ошибку непонял что и где вызывает ошибки? А эту я сразу же надпись снёс, иначе она бы вместе с главной загружалась (а это мне ненужно ) а ошибки… …Ошибка: Access Violation at address xxxxxxxx in module ‘XXXXXXX.exe’. Read of address xxxxxxxx., Сообщение отредактировано: Demon:-) — 14.03.08, 08:34 |
vladimir74 |
|
Demon:-) |
Demon:-) |
|
Цитата vladimir74 @ 14.03.08, 08:41 Demon:-) вот сам дпр
program Project1; uses Forms, Unit1 in ‘Unit1.pas’ {Form1}, Unit2 in ‘Unit2.pas’ {Form2}; ….. {$R *.res} begin Application.Initialize; Application.Title := »; Application.CreateForm(TForm1, Form1); Application.Run; end. Унит1 это главная Вот в Уните1 я я вызываю дочку Унит2 таким образом (в первом сообщении было описано)
form2:=tform2.Create (self); вылетали ошибки, и вставил Ваш код
if not assigned(form2) then form2:=tform2.Create (self); form2.Show(); ошибки остались и возникла новая вот |
vladimir74 |
|
ах да может тебе вместо tform2.Create(self) создавать tform2.Create(Application) ? Добавлено 14.03.08, 09:11 я только что сделал проект (пятница подействовала)
program Project1; uses Forms, Unit1 in ‘Unit1.pas’ {Form1}, Unit2 in ‘Unit2.pas’ {Form2}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button: TButton; procedure ButtonClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.ButtonClick(Sender: TObject); begin if not assigned(form2) then form2:=tform2.Create(self); form2.Show(); end; end.
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Edit: TEdit; procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; Form2 := nil; end; end. у меня никаких ошибок нет, следовательно я так понимаю проблема ни в самом открытии а в том что ты при этом открытии делаешь дополнительно. Пройдись дебагером от начала создания до конца открытия формы… |
AnalogXP |
|
Full Member
Рейтинг (т): 8 |
Вот так совпадение. Прям сейчас с той же проблемой сталкнулся. Код точно такой же.
Ini := TIniFile.Create(ShellDir(‘AppData’)+’LinkCollectorConfig.ini’); try form2.Top:=ini.ReadInteger(‘Program’,’Top’, 100); // Если эти две сторочки убать form2.Left:=ini.ReadInteger(‘Program’,’Left’,100); // то проблема исчезает finally ini.Free; end; Но как в таком случае регулировать ее позицию? Все вроде, решил проблему заменив код создания формы с
if not assigned(form2) then form2:=tform2.Create(self); form2.Show; на этот
if not assigned(form2) then Application.CreateForm(TForm2, Form2); Form2.Show; Сообщение отредактировано: AnalogXP — 14.03.08, 10:13 |
Demon:-) |
|
Цитата AnalogXP @ 14.03.08, 09:58 Вот так совпадение. Прям сейчас с той же проблемой сталкнулся. Код точно такой же.
Ini := TIniFile.Create(ShellDir(‘AppData’)+’LinkCollectorConfig.ini’); try form2.Top:=ini.ReadInteger(‘Program’,’Top’, 100); // Если эти две сторочки убать form2.Left:=ini.ReadInteger(‘Program’,’Left’,100); // то проблема исчезает finally ini.Free; end; Но как в таком случае регулировать ее позицию? Все вроде, решил проблему заменив код создания формы с
if not assigned(form2) then form2:=tform2.Create(self); form2.Show; на этот
if not assigned(form2) then Application.CreateForm(TForm2, Form2); Form2.Show; да реально «тупость» почему-то дочерней форме нельзя задавать размер Вызывает ошибку вот эта запись:
procedure TForm2.FormCreate(Sender: TObject); begin form2.Width:=540; form2.Height:=360; end; гы комментируешь и всё работает
procedure TForm2.FormCreate(Sender: TObject); begin //form2.Width:=540; //form2.Height:=360; end; всем псб… |
leo |
|
AnalogXP, Demon:-)
procedure TForm2.FormCreate(Sender: TObject); begin {form2.}Width:=540; {form2.}Height:=360; end;
PS. Вот вам и разница между TForm2.Create и Application.CreateForm: Сообщение отредактировано: leo — 14.03.08, 11:36 |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Delphi: Общие вопросы
- Следующая тема
[ Script execution time: 0,1113 ] [ 16 queries used ] [ Generated: 9.06.23, 02:00 GMT ]
Модератор: Модераторы
Ошибка Fatal: Syntax error, «;» expected
Доброго времени суток, препод дала задание, но при компиляции программа выдает ошибку «cloud.pas(51,12) Fatal: Syntax error, «;» expected but «identifier TFORM1″ found»
В код никакой отсебятины не добавлялось, полное копирование из задания.
- Код: Выделить всё
unit cloud;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, FileUtil, Buttons, ExtCtrls, StdCtrls;type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
PaintBox1: TPaintBox;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
private
{ private declarations }
//Координаты прорисовки объекта.Доступны всем процедурам класса TForm1
x1,y1:Integer;
public
{ public declarations }
//Процедура прорисовки облака
procedure Cloud(x,y:Integer; ColorCloud:TColor);
end;var
Form1: TForm1;implementation
{$R *.lfm}
procedure TForm1.FormCreate(Sender: TObject);
beginend;
{ TForm1 }
procedure TForm1.Cloud(x,y:Integer; ColorCloud:TColor);
begin
//Прорисовка облака из двух эллипсов
with PaintBox1.Canvas do begin
Pen.Style:=psClear;
Brush.Color:=ColorCloud;
Ellipse(x,y,x+80,y+40);
Ellipse(x+30,y+10,x+100,y+50);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//установка начальных значений
x1:=0;
y1:=50;
Timer.Interval:=100;
//прорисовка картинки по которой двигается объект
PaintBox1.Canvas.Brush.Color:=clBlue;
PaintBox1.Canvas.Rectangle(0,0,PaintBox1.Width,PaintBox1.Height);
//Включение таймера-запуск анимации
Timer1.Enabled:=true;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//закраска объекта цветом фона
Cloud(x1,y1,clBlue)
//изменение координат прорисовки
x1:=x1+1;
//прорисовка объекта в новом месте
Cloud(x1,y1,clWhite);
end;
end.
Очень надеюсь на вашу помощь)
- Mire
- незнакомец
- Сообщения: 1
- Зарегистрирован: 03.05.2019 10:49:20
Re: Ошибка Fatal: Syntax error, «;» expected
Awkward » 04.05.2019 12:14:19
- Код: Выделить всё
procedure TForm1.Cloud(x,y:Integer; ColorCloud:TColor);
begin
//Прорисовка облака из двух эллипсов
with PaintBox1.Canvas do begin // <<<<< не парный begin
Pen.Style:=psClear;
Brush.Color:=ColorCloud;
Ellipse(x,y,x+80,y+40);
Ellipse(x+30,y+10,x+100,y+50);
end; // <<<<<< вставить
end;
- Awkward
- новенький
- Сообщения: 43
- Зарегистрирован: 19.01.2017 00:06:47
Re: Ошибка Fatal: Syntax error, «;» expected
iskander » 04.05.2019 12:29:38
И еще вот здесь:
- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
//установка начальных значений
x1:=0;
y1:=50;
Timer.Interval:=100;
//прорисовка картинки по которой двигается объект
PaintBox1.Canvas.Brush.Color:=clBlue;
PaintBox1.Canvas.Rectangle(0,0,PaintBox1.Width,PaintBox1.Height);
//Включение таймера-запуск анимации
Timer1.Enabled:=true;
//end; <-------- убрать лишний end
end;
- iskander
- энтузиаст
- Сообщения: 543
- Зарегистрирован: 08.01.2012 18:43:34
Re: Ошибка Fatal: Syntax error, «;» expected
VirtUX » 05.05.2019 11:27:40
Mire писал(а):procedure TForm1.Timer1Timer(Sender: TObject);
begin
//закраска объекта цветом фона
Cloud(x1,y1,clBlue); <—- тут пропустили «;»
//изменение координат прорисовки
x1:=x1+1;
//прорисовка объекта в новом месте
Cloud(x1,y1,clWhite);
end;
-
VirtUX - энтузиаст
- Сообщения: 878
- Зарегистрирован: 05.02.2008 10:52:19
- Откуда: Крым, Алушта
Вернуться в Lazarus
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12
Когда я пытаюсь добавить в делфи Form2.ShowModal; пишет ошибку: «Undeclared identifier ‘Form2’ at (указывает линию)»
Вот код unit1:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, GifImg, Vcl.ExtCtrls, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Gif : TGifImage;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Visible := false;
Form2.ShowModal;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Gif := TGifImage.Create;
Gif.LoadFromFile('C:UsersArtemDesktopvrr.3321videorenderUntitled.gif');
Gif.Animate := True;
Image1.Picture.Assign(GIF);
end;
end.
Код unit2(второй формы):
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
end;
end.
Скажите, пожалуйста в чем проблема
Заранее спасибо!