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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2012, 18:49   #1
Арианна
Пользователь
 
Регистрация: 11.03.2012
Сообщений: 25
По умолчанию Delphi. Работа с классами

Совсем недавно начала изучать Delphi, а тут дали задание на классы. Вроде бы и не очень сложно, но что-то у меня не получается. А задание такое: "На форме есть 2 Edit и 2 кнопки. Нужно, чтобы при нажатии одной кнопки число из первого Edit возводилось в квадрат, а при нажатии второй кнопки в куб. Результат должен выводиться во втором Edit. Все это нужно сделать через классы. У меня есть пример, но там результат выводиться сообщением.

Код:
unit Unit1;
interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

type
TEvenNumber=Class
private
EvenNumber:integer;
public
constructor SetNumber(Number:integer);
function pow_2:integer;
function pow_3:integer;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

constructor TEvenNumber.SetNumber(Number:integer);
begin
EvenNumber:=Number;
end;

function TEvenNumber.pow_2:integer;
begin
result:=EvenNumber*EvenNumber;
end;

function TEvenNumber.pow_3:integer;
begin
result:=EvenNumber*EvenNumber*EvenNumber;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
T:TEvenNumber;
begin
T:=TEvenNumber.SetNumber(strtoint(edit1.Text));
showmessage(inttostr(T.pow_2));
end;

procedure TForm1.Button2Click(Sender: TObject);
var
T:TEvenNumber;
begin
T:=TEvenNumber.SetNumber(strtoint(edit1.Text));
showmessage(inttostr(T.pow_3));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
end.
Арианна вне форума Ответить с цитированием
Старый 18.10.2012, 19:45   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Вместо
Код:
showmessage(inttostr(T.pow_2));
Пишите
Код:
Edit2.Text:=IntToStr(T.pow_2));
Аналогично при возведении в куб
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 18.10.2012, 20:02   #3
Арианна
Пользователь
 
Регистрация: 11.03.2012
Сообщений: 25
По умолчанию

не получается. там какая-то проблема в коде. ошибок нет, но в Edit ничего не выводиться
Арианна вне форума Ответить с цитированием
Старый 18.10.2012, 20:18   #4
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Вот так у меня все работает
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
  t:TEvenNumber;
begin
  T:=TEvenNumber.SetNumber(strtoint(edit1.Text));
  Edit2.Text:=IntToStr(T.pow_2);
end;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 18.10.2012, 20:21   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
T:=TEvenNumber.SetNumber(strtoint(e dit1.Text));
Круто! А создавать объект кто будет? Что-то я не вижу static в описании класса.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.10.2012, 20:29   #6
Арианна
Пользователь
 
Регистрация: 11.03.2012
Сообщений: 25
По умолчанию

Я просто не знаю как оформляются классы в Delphi =(((
Арианна вне форума Ответить с цитированием
Старый 19.10.2012, 11:34   #7
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Тогда прочитай про то, что в делфи обозначает слово new, например
Son Of Pain вне форума Ответить с цитированием
Старый 19.10.2012, 13:36   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Арианна, ничего в Edit у Вас не выводится, потому как в Edit1 Вы задаёте исходное число.
Результат в вашем примере выводился с помощью ShowMessage.
Если нужно, чтобы результат попадал в Edit2 - нужно прописать код присвоения результата. (как это сделано в примере GetMax в пост #4)



Цитата:
Сообщение от Stilet
Круто! А создавать объект кто будет? Что-то я не вижу static в описании класса.
Виталий, зачем Вы так? Вы своим вопросом сломали мне всю веру в ООП!

А как же понимать слово constructor ? Разве вызов метода-конструктора недостаточно для создания экземпляра класса?!
Цитата:
Код:
 
type
TEvenNumber=Class
private
EvenNumber:integer;
public
constructor SetNumber(Number:integer);
function pow_2:integer;
function pow_3:integer;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

constructor TEvenNumber.SetNumber(Number:integer);
begin
EvenNumber:=Number;
end;

T:=TEvenNumber.SetNumber(strtoint(edit1.Text));
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с классами на С++ darinadarina Помощь студентам 1 08.05.2012 18:34
Работа с классами petrovich2005 Помощь студентам 2 24.06.2011 17:32
работа с классами JinZh C++ Builder 2 20.04.2011 23:17
работа с классами ver Помощь студентам 8 15.01.2011 18:07
С++: работа с классами MR_Andrew Общие вопросы C/C++ 23 01.04.2010 23:46