Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2009, 19:37   #1
Pro4RE
Пользователь
 
Аватар для Pro4RE
 
Регистрация: 21.07.2008
Сообщений: 32
По умолчанию Делфи. Как заставить читать данные с метки

Вот код:
Код:
unit Unit1;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Label5: TLabel;
    SpinEdit1: TSpinEdit;
    Label7: TLabel;
    Edit5: TEdit;
    Panel2: TPanel;
    ListBox1: TListBox;
    Image1: TImage;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    Label6: TLabel;
    Label8: TLabel;
    CheckBox1: TCheckBox;
    Button1: TButton;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    procedure buildgrafic();
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure N10Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure N13Click(Sender: TObject);
    procedure N14Click(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure N15Click(Sender: TObject);
  end;
var
  Form1: TForm1;
  kx:integer=40; 
  ky:integer=40; 
  dx:integer=250;
  dy:integer=200;
  angle:real=0;      
  a:real=4;
  b:real=2;
implementation

uses Unit2;

{$R *.dfm}
procedure TForm1.N12Click(Sender: TObject);
begin
showmessage ('');
end;

procedure TForm1.N13Click(Sender: TObject);
begin
showmessage('');
end;

procedure TForm1.N14Click(Sender: TObject);
begin
showmessage('');
end;
procedure povorot(var x,y,angle:real);  
var x1,y1:real;
begin   
     x1:=x;
     y1:=y;
     x:=x1*cos(angle)-y1*sin(angle);
     y:=x1*sin(angle)+y1*cos(angle);
end;
procedure f(var x,y,t:real);    
begin
     x:=a*sqr(cos(t))+b*cos(t);
     y:=a*cos(t)*sin(t)+b*sin(t);
end;
procedure tform1.buildgrafic();  
var t,x,y:real;
    w:byte;  
begin
     image1.Picture:=nil; 
     listbox1.Items.Clear;

     
     
     if checkbox1.Checked then 
     begin
          image1.Canvas.Pen.Color:=clscrollbar;
          for w:=10 downto 0 do 
          image1.Canvas.Ellipse(-w*kx+dx,-w*ky+dy,w*kx+dx,w*ky+dy); 
     end;

     for w:=10 downto 0 do 
     image1.Canvas.TextOut(dx,w*ky+dy,inttostr(w));


     image1.Canvas.MoveTo(0,dy); image1.Canvas.LineTo(image1.Width,dy); //рисуем ось х
     image1.Canvas.MoveTo(dx,0); image1.Canvas.LineTo(dx,image1.Height);

     image1.Canvas.Pen.Width:=6;
     image1.Canvas.Pen.Color:=clred;


     t:=0;
     f(x,y,t);
     if angle<>0 then povorot(x,y,angle);
     image1.Canvas.MoveTo(round(x*kx)+dx,round(y*ky)+dy);
     while t<=2*pi do
     begin
          f(x,y,t); 

          if abs(x)<0.00001 then listbox1.Items.Add('X=0 при t='+floattostr(t));
          if abs(y)<0.00001 then listbox1.Items.Add('Y=0 при t='+floattostr(t));

          if angle<>0 then povorot(x,y,angle); 
          image1.Canvas.LineTo(round(x*kx)+dx,round(y*ky)+dy);  
          t:=t+pi/30;
     end;
end ;


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     showmessage('')
end;

procedure TForm1.N10Click(Sender: TObject);
begin
     close
end;

procedure TForm1.N2Click(Sender: TObject);
begin     
     a:=strtofloat(edit1.Text);
     b:=strtofloat(edit2.Text);

     case (sender as tmenuitem).Tag of 
     0:dx:=dx-strtoint(edit4.Text);   
     1:dx:=dx+strtoint(edit4.Text);   
     2:dy:=dy-strtoint(edit3.Text);   
     3:dy:=dy+strtoint(edit3.Text);   
     4:begin                       
            kx:=kx-spinedit1.Value;
            ky:=ky-spinedit1.Value;
       end;
     5:begin                        
            kx:=kx+spinedit1.Value;
            ky:=ky+spinedit1.Value;
       end;
     6:if angle>=360 then angle:=0 else
       angle:=angle+strtofloat(edit5.Text);
     7:if angle<=-360 then angle:=0 else
       angle:=angle-strtofloat(edit5.Text);
     end;
     buildgrafic();
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
     buildgrafic();
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
buildgrafic();
end;



procedure TForm1.N11Click(Sender: TObject);
begin
close;
end;

procedure TForm1.N15Click(Sender: TObject);
begin
Form2.Show;
end;

end.
Собственно сама функция вот где:
Код:
begin
     x:=a*sqr(cos(t))+b*cos(t);
     y:=a*cos(t)*sin(t)+b*sin(t);
Как заставить, чтобы а и b счиывалиь с меток? И куда вставить код:
Я тыкал, тыкал,, чот не работает, а завтра сдавать... Выручите, господа программисты:
Код:
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
Верно ли это? И куда его воткнуть и что дописать? ЗА ранее всем спасибо!
Pro4RE вне форума Ответить с цитированием
Старый 08.12.2009, 19:40   #2
Fantazerishka
Пользователь
 
Регистрация: 23.09.2009
Сообщений: 62
По умолчанию

a:real=4;
b:real=2;
Вот это не понятно... Поясни ты задаешь вещественный тип, а потом задаешь им значение?
Fantazerishka вне форума Ответить с цитированием
Старый 08.12.2009, 19:47   #3
Pro4RE
Пользователь
 
Аватар для Pro4RE
 
Регистрация: 21.07.2008
Сообщений: 32
По умолчанию

Дак вот от сюда он сначала брал значения, их по идее надо удалить... Я удалял, пробовал, бестолку.
Pro4RE вне форума Ответить с цитированием
Старый 08.12.2009, 19:47   #4
Pro4RE
Пользователь
 
Аватар для Pro4RE
 
Регистрация: 21.07.2008
Сообщений: 32
По умолчанию

А надо, чтобы брал с меток, они жирным выделены.
Pro4RE вне форума Ответить с цитированием
Старый 08.12.2009, 19:58   #5
Fantazerishka
Пользователь
 
Регистрация: 23.09.2009
Сообщений: 62
По умолчанию

a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
это посути правильно, вставлять можно сразу после бегина...
a:real=4;
b:real=2; - а это неправильно раз ты их задаешь через edit

Label вроде бы для ввода не предназначен, но вывести можно Label.Caption=
Fantazerishka вне форума Ответить с цитированием
Старый 08.12.2009, 20:03   #6
Pro4RE
Пользователь
 
Аватар для Pro4RE
 
Регистрация: 21.07.2008
Сообщений: 32
По умолчанию

[Error] Unit1.pas(98): Undeclared identifier: 'Edit1'
[Error] Unit1.pas(99): Missing operator or semicolon
Вот что пишет, если сделать так:
Код:
procedure f(var x,y,t,a,b:real);    //âû÷èñëÿåò çíà÷åíèÿ x ,y â çàâèñèìîñòè îò t
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
     x:=a*sqr(cos(t))+b*cos(t);
     y:=a*cos(t)*sin(t)+b*sin(t);
end;
Ошибка у нас...
Pro4RE вне форума Ответить с цитированием
Старый 08.12.2009, 20:10   #7
Pro4RE
Пользователь
 
Аватар для Pro4RE
 
Регистрация: 21.07.2008
Сообщений: 32
По умолчанию

http://depositfiles.com/files/6e2ys0yyl
Вот исходник.
Pro4RE вне форума Ответить с цитированием
Старый 08.12.2009, 20:25   #8
Pro4RE
Пользователь
 
Аватар для Pro4RE
 
Регистрация: 21.07.2008
Сообщений: 32
По умолчанию

И походу никто не поможет((((
Pro4RE вне форума Ответить с цитированием
Старый 08.12.2009, 21:01   #9
Pro4RE
Пользователь
 
Аватар для Pro4RE
 
Регистрация: 21.07.2008
Сообщений: 32
По умолчанию

Ну за деньги хотя бы может кто сделает?
Pro4RE вне форума Ответить с цитированием
Старый 08.12.2009, 21:20   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Ну за деньги хотя бы может кто сделает?
не бузите!
за что тут деньги то брать?!!!
у Вас f не является методом класса. поэтому и не видит его переменные и объекты!
напишите так:
Код:
procedure f(var x,y,t,a,b:real);//вычисляет значения x ,y в зависимости от t
begin
   a:=StrToFloat(Form1.Edit1.Text);
   b:=StrToFloat(Form1.Edit2.Text);
...
p.s. я бы рекомендовал повесить на все эдиты на событие OnChange перерисовку buildgrafic - тогда как изменишь параметр, сразу график будет меняться, автоматически.
и ещё, использовать Edit для ввода значение, конечно, можно, но,
1) тогда, хотя бы надо повесить проверку, что туда ввели число, а не хрень какую-нибудь!
2) а лучше использовать специальные визуальные компоненты для ввода чисел...

Последний раз редактировалось Serge_Bliznykov; 08.12.2009 в 21:26.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как можно читать бинарные данные, через UDP? b_gafurov Работа с сетью в Delphi 0 06.04.2009 15:15
Читать фаил и регистрировать данные в таблицу или матрицу ciaonataha Общие вопросы C/C++ 3 26.03.2009 10:59
Метки в делфи Neymexa Помощь студентам 1 29.01.2009 16:52
Программно читать данные из БД Access Заяц Microsoft Office Access 4 10.06.2007 00:46