Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 08.10.2009
Сообщений: 78

где ошибка?

13.12.2009, 10:40. Показов 861. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Скажите пожалуйста где ошибка:по условиям задачи полукруг должен двигаться по полукругу.неполучается связать таймер с кнопой(((

вот код программы:
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
var
  Form4: TForm4;
  j,i,n:integer;x1,x2,x3,x4,y1,y2,y3,y4:integer;r,a,b:integer;c:real;
 
implementation
 
{$R *.dfm}
 
    procedure TForm4.Button1Click(Sender: TObject);
begin
   Form4.Timer1.enabled:=true;
 form4.Timer1.interval:=500;
end;
 
procedure TForm4.Timer1Timer(Sender: TObject);
begin
 x1:=40;
y1:=50;
x2:=90;
y2:=100;
x3:=40;
y3:=75;
x4:=90;
y4:=75;
a:=0;
r:=10;
  While (a<>r) do
 begin
  form4.Canvas.Pen.Color:=clRed;
form4.Canvas.Brush.Color:=clyellow;
  Form4.Canvas.Pie(x1,y1,x2,y2,x3,y3,x4,y4);
form4.Canvas.Brush.Color:=clBtnFace;
form4.Canvas.Pen.Color:=clBtnFace;
  Form4.Canvas.Pie(x1,y1,x2,y2,x3,y3,x4,y4);
  a:=a+1;
 c:=Sqrt(abs(sqr(r)-sqr(a)));
  b:=round(c);
    x1:=x1+a;
    y1:=y1+b;
      x2:=x2+a;
    y2:=y2+b;
     x3:=x3+a;
    y3:=y3+b;
     x4:=x4+a;
    y4:=y4+b;
    end;
  While (a<>0) do
 begin
   form4.Canvas.Pen.Color:=clRed;
form4.Canvas.Brush.Color:=clyellow;
  Form4.Canvas.Pie(x1,y1,x2,y2,x3,y3,x4,y4);
form4.Canvas.Brush.Color:=clBtnFace;
form4.Canvas.Pen.Color:=clBtnFace;
  Form4.Canvas.Pie(x1,y1,x2,y2,x3,y3,x4,y4);
 a:=a-1;
 c:=Sqrt(abs(sqr(r)-sqr(a)));
  b:=round(-c);
    x1:=x1+a;
    y1:=y1+b;
      x2:=x2+a;
    y2:=y2+b;
     x3:=x3+a;
    y3:=y3+b;
     x4:=x4+a;
    y4:=y4+b;
  end;
  While (x1<>40) do
  begin
   form4.Canvas.Pen.Color:=clRed;
form4.Canvas.Brush.Color:=clyellow;
  Form4.Canvas.Pie(x1,y1,x2,y2,x3,y3,x4,y4);
form4.Canvas.Brush.Color:=clBtnFace;
form4.Canvas.Pen.Color:=clBtnFace;
  Form4.Canvas.Pie(x1,y1,x2,y2,x3,y3,x4,y4);
  x1:=x1-2;
  x2:=x2-2;
  x3:=x3-2;
  x4:=x4-2;
  end;
end;
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.12.2009, 10:40
Ответы с готовыми решениями:

Где Ошибка?
TNewThread = class(TThread) private { Private Declar } StringListCount:integer; StringListLoad:TstringList; ...

где ошибка??(
procedure TForm1.ListBox1DblClick(Sender: TObject); var mask,mask1,s:string; begin mask1:='D:\ñêà÷êà\'; mask:=listbox1.Items; ...

Где ошибка?
Действие не повторяется var sil:string; Log:tstringlist; i:integer; begin For i to Form1.Memo1.lines.count-1 do ...

13
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2009, 11:24
В чем выражается не согласованность таймера с кнопкой? Если,что может быть,таймер запускается сразу после запуска проги,то надо создать обрабочик: FormCreate и в нем запретить запуск таймера: Timer.Enable:= False;
1
2 / 2 / 0
Регистрация: 08.10.2009
Сообщений: 78
13.12.2009, 11:28  [ТС]
мне нужно чтоб по нажатию кнопки полукруг начал двигаться,он дригается но очень быстро а таеймер вроде ваще не реагирует
1
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2009, 11:30
Cейчас дельфина запущу потестю малехо
1
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2009, 14:18
Извини не дают у компа посидеть.Суть в том что ты усложнил все циклами.Лучше без них.Вот полностью рабочий код,что не понятно обращайся:
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    procedure Timer1Timer(Sender: TObject);
    procedure Line(x, y,x1,y1,a,col: integer);
    procedure LineDel(x, y,x1,y1, a, col: integer);
 
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  a: integer;
implementation
 
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
 Timer1.Enabled:= True;
 Timer1.Interval:= 50;
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
a:= 0;
 Timer1.Enabled:= False;
end;
 
procedure TForm1.Line(x, y,x1,y1,a, col: integer);
const
G= 0.0174532;
 var
x2,y2,x3,y3: integer;
begin
 Canvas.Pen.Color:= col;
 Canvas.Brush.Color:= col;
 x2:= Round(Round((x+x1)/2)+x*cos(a*G));
 y2:= Round(Round((y+y1)/2)+y*sin(a*G));
 x3:= Round(Round((x+x1)/2)-x*cos(a*G));
 y3:= Round(Round((y+y1)/2)-y*sin(a*G));
 Canvas.Pie(x,y,x1,y1,x2,y2,x3,y3);
end;
 
 
procedure TForm1.LineDel(x, y,x1,y1, a, col: integer);
const
G= 0.0174532;
var
 x2,y2,x3,y3: integer;
begin
 Canvas.Pen.Color:= col;
 Canvas.Brush.Color:= col;
 x2:= Round(Round((x+x1)/2)+x*cos(a*G));
 y2:= Round(Round((y+y1)/2)+y*sin(a*G));
 x3:= Round(Round((x+x1)/2)-x*cos(a*G));
 y3:= Round(Round((y+y1)/2)-y*sin(a*G));
 Canvas.Pie(x,y,x1,y1,x2,y2,x3,y3);
end;
 
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Form1.LineDel(100,100,200,200,a,clBtnFace);
  a:=a+1;
 Form1.Line(100,100,200,200,a,clRed);
 
end;
 
end.
Добавлено через 4 минуты
Да забыл,чтобы не загружаться G- это коэфициент преобразования градусы/радианы; pi = 180градусам
0
2 / 2 / 0
Регистрация: 08.10.2009
Сообщений: 78
13.12.2009, 15:30  [ТС]
procedure TForm1.FormCreate(Sender: TObject);
begin
a:= 0;
Timer1.Enabled:= False;
end;
Эта процедура обязательна?и в чем ее суть?
0
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2009, 15:35
Нет она не обязательна.Дело в том что если запустить программу без неё ,то таймер запустится сразу - тогда зачем кнопка? А переменную а я зануляю на всякий случай чтобы было какое то начальное значение,а не мусор ,но без этого то же будет работать нормально
1
2 / 2 / 0
Регистрация: 08.10.2009
Сообщений: 78
13.12.2009, 15:40  [ТС]
ясно. СПАСИБО большое вы спасли мою курсовую от краха)))

Добавлено через 4 минуты
тут еще 1 вопрос возник :
x2:= Round(Round((x+x1)/2)+x*cos(a*G));
y2:= Round(Round((y+y1)/2)+y*sin(a*G));
x3:= Round(Round((x+x1)/2)-x*cos(a*G));
y3:= Round(Round((y+y1)/2)-y*sin(a*G));
эти формулы как до них додуматься?вроде и не формулы круга...
0
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2009, 15:53
Round((x+x1)/2) вот этим мы практически задаем начальные координаты сектора, а это изменение в зависимости от угла x*cos(a*G)) можно просто тупо попробовать цифры вставлять и так алгоритм понятней будет.Мы как бы в начале в ручную моделируем координаты
0
2 / 2 / 0
Регистрация: 08.10.2009
Сообщений: 78
13.12.2009, 15:55  [ТС]
то есть если перед x*cos(a*G)) поставить минус фигура пойдет в противоположную сторону?я правильно понял?
0
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2009, 16:02
Нет а вообще поэксперементируй - появляется при определенных знаках эффет схождения и расхождения сектора.А чтобы крутануть в другую сторону нужно здесь a:=a+1; поменять знак
0
2 / 2 / 0
Регистрация: 08.10.2009
Сообщений: 78
13.12.2009, 16:29  [ТС]
сейчас попробуим))

Добавлено через 25 минут
)))))))))))спасибо что помогли )))показали как связать таймер и кнопку)))тока по условиям задачи полукруг не крутиться по своей оси а двигается по некоторой траекториии и эта траектория тоже полукруг)))
0
2 / 2 / 0
Регистрация: 08.10.2009
Сообщений: 78
13.12.2009, 18:44  [ТС]
че то не получается траекторию одной формулой записать не могли бы вы мне помочь еще раз ))?
0
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2009, 19:25
извини но я уже уезжаю в командировку,уже одеваюсь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2009, 19:25
Помогаю со студенческими работами здесь

Где ошибка?
Простой генератор...Очень уж простой, для моего мозга это мозголом... Вот код: procedure TForm1.Button1Click(Sender: TObject); var...

Где ошибка?
Подскажите пожалуйста почему оно ругается?: procedure TForm1.DrawBranch(x1,y1,x2,y2: integer); // рисование дуги begin with...

Где ошибка
var Form1: TForm1; f:tstringlist; f1:tstringlist; i,j,n:integer; implementation {$R *.dfm}

Где ошибка?
Написал код, все работает, но почему-то всегда появляется сообщение о том, что наибольший элемент 1 матрицы равен 0. Подскажите, в чем...

Где ошибка?
Народ где ошыбка? procedure TForm1.Button1Click(Sender: TObject); var a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12:integer;...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru