Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.05.2010, 00:40
Аватар для TemnbluAngel
TemnbluAngel TemnbluAngel вне форума
Прохожий
 
Регистрация: 22.05.2010
Сообщения: 4
Репутация: 10
Восклицание Ошибка при обращении к методу класса

Есть "замечательная" кинематическая схема, которую надо заставить двигаться посредством графики.
Сырой код был успешно написан и работоспособностью обладал, чего не могу сказать о том, когда были применены объекты и классы.
Код:
unit Unit1;

interface

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

type
mclassic=class(Tobject) // задаём класс явно
// заполняем поля класса
//private
xd,xb,xa,xc,x0,yd,yb,ya,yc,y0,o1,o2,o3,o4,R:integer;
od,dc,ab,ob:integer;
w,w1,w2,w3: real;
SpinEdit1: TSpinEdit;
Edit1: TEdit;
//заполняем методы класса
procedure vh;
procedure draw;
end;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Edit1: TEdit;
    SpinEdit1: TSpinEdit;
    Button1: TButton;
    procedure SpinEdit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  mclas: mclassic;
implementation

{$R *.dfm}
// процедура ввода входных данных
procedure mclassic.vh;
begin
R:=StrToInt(Edit1.Text);
od:=round(R);
ob:=round(od);
dc:=90;
ab:=70;
W:=spinedit1.value*pi/180;
end;


//процедура рисования кинематического механизма
procedure mclassic.draw;
begin

x0:=round(form1.image1.width/2);
y0:=round(form1.image1.height/2);
w1:=pi-pi/2-w;

xd:=x0+round(od*cos(w));
yd:=y0-round(od*sin(w));
xb:=x0-round(ob*cos(w1));
yb:=y0-round(ob*sin(w1));
xc:=x0+round(sqrt(dc*dc-9*r*r*sin(w)*sin(w)));
yc:=y0+round(dc);
xa:=x0-round(ab);
ya:=y0+round(2*r*cos(w1));

o1:=round(x0-od);
o2:=round(y0-od);
o3:=round(x0+od);
o4:=round(y0+od);

form1.image1.picture:=nil;
with form1.image1.canvas do
begin
ellipse(o1,o2,o3,o4);
ellipse(xd-3, yd-3, xd+3, yd+3);
ellipse(xb-3, yb-3, xb+3, yb+3);
moveto(x0,y0);
Pen.Style:=psDot;
lineto(xd,yd);
moveto(x0,y0);
lineto(xb,yb);
Pen.Style:=psSolid;
moveto(xc,yc);
Rectangle(xc+10,yc+8,xc-10,yc-8);
Lineto(xc+400,yc);
lineto(xc-400,yc);
moveto(xc,yc+10);
Pen.Width:=2;
lineto(400,yc+10);
lineto(150,yc+10);
moveto(xc,yc-10);
lineto(400,yc-10);
lineto(150,yc-10);
moveto(xd,yd);
Pen.Width:=1;
lineto(xc,yc);
ellipse(xc-3, yc-3, xc+3, yc+3);
moveto(xb,yb);
lineto(xa,ya);
ellipse(xa-3, ya-3, xa+3, ya+3);
moveto(xa,ya);
Pen.Width:=2;
lineto(xa,ya+400);
lineto(xa,ya-400);
Pen.Width:=1;
moveto(xd+5,yd-8);
Textout(xd+5,yd-8,'D');
moveto(xb-5,yb-15);
Textout(xb-5,yb-15,'B');
moveto(xa-15,ya-8);
Textout(xa-15,ya-8,'A');
moveto(xc+10,yc-25);
Textout(xc+10,yc-25,'C');
moveto(x0+1,y0+1);
Textout(x0+1,y0+1,'O');
moveto(x0,y0+R);
Textout(x0,y0+R+3,'P');
Pen.Width:=2;
Lineto(x0+20,y0+R);
Lineto(x0-20,y0+R);
end;
end;

procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
mclas:=mclassic.Create;// выделение памяти под экземпляр
mclas.vh;
mclas.draw;
end;

end.
Ошибка происходит при попытке преобразования в методе класса vh и вводе в нём с формы значения r.
Код:
procedure mclassic.vh;
begin
R:=StrToInt(Edit1.Text);
od:=round(R);
ob:=round(od);
dc:=90;
ab:=70;
W:=spinedit1.value*pi/180;
end;

Сижу уже битый 3 час и не знаю как выкрутиться.
Ответить с цитированием
  #2  
Старый 22.05.2010, 01:45
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Код:
R:=StrToInt(Form1.Edit1.Text);
Второй допишешь по аналогии...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 22.05.2010, 02:45
Аватар для TemnbluAngel
TemnbluAngel TemnbluAngel вне форума
Прохожий
 
Регистрация: 22.05.2010
Сообщения: 4
Репутация: 10
По умолчанию

Спасибо большое.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:00.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025