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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2013, 19:25   #1
qwerty8
Новичок
Джуниор
 
Регистрация: 05.12.2013
Сообщений: 2
По умолчанию Ошибка: Declaration of 'Create' differs from previous declaration

Код:
unit Unit1;

interface

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

  type TShar=class
constructor Create(C:TCanvas);
procedure DrawMe(C:TCanvas); 
private
x,y:integer;      //Это координаты фигурки
dx,dy:integer;    //Это приращение скорости по направлению x и y
col:integer;      //Цвет фигурки
end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  n1,i:integer; //В переменную n будем сохранять число объектор.
  Form1: TForm1;
  s1: array [1..20] of TShar; //Массив для 20 фигурок

implementation

{$R *.dfm}

constructor TShar.Create();
begin
Randomize;            //Сбрасываем генератор случайных чисел
  x:=Random(150);     //Записываем в x случайное от 0 до 150
  y:=Random(200);     //Записываем в y случайное от 0 до 150
  dx:=2-Random(4);    //dx "скорость движения" фигуры по оси x
  dy:=2-Random(4);    //dy "скорость движения" фигуры по оси y
  if dx=0 then dx:=1; //если скорость нулевая присваиваем 1
  if dy=0 then dy:=1;
  col:=Random(255*255); //Задаем случайный цвет
end;

procedure TShar.DrawMe(C:TCanvas); //Рисуем кружок
begin
form1.Canvas.Brush.color:=col;
C.Pen.Color:=col;
C.Ellipse(x-5,y-5,x+5,y+5);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if n1=20 then exit;  //В переменной n1 содержится число фигурок на форме. 
                       //Если на форме уже 20 фигурок, 
                       //то просто выходим не создавая новую.
  n1:=n1+1;    //Увеличиваем счетчик фигурок на 1
  s1[n1]:=TShar.Create(); //Создаем новый элемент массива
  Timer1.Enabled:=true;   //Запускаем таймер.

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
//Следующие две строки закрашивают белый квадратик
  form1.Canvas.Brush.color:=clwhite; 
  form1.Canvas.FillRect(0,0,160,210);
  //Проходимся по всем элементах массива
  for i:=1 to n1 do begin
    s1[i].DrawMe(form1.Canvas); //Вызываем метод, рисующий фигуру
  end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
n1:=0;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  for i:=1 to n1 do begin
   s1[i].Free;
  end;

end;

end.
qwerty8 вне форума Ответить с цитированием
Старый 05.12.2013, 19:38   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

и что ?
eval вне форума Ответить с цитированием
Старый 05.12.2013, 20:16   #3
qwerty8
Новичок
Джуниор
 
Регистрация: 05.12.2013
Сообщений: 2
По умолчанию

Там в практической части задание (вложение). Вроде все правильно сделал, но выдает ошибку.
Вложения
Тип файла: doc Лабораторная работа 10.doc (51.7 Кб, 14 просмотров)
qwerty8 вне форума Ответить с цитированием
Старый 05.12.2013, 20:17   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Конструктору своего класса присвойте флаг overload, т.к. стандартный конструктор TObject не имеет параметров.
Человек_Борща вне форума Ответить с цитированием
Старый 05.12.2013, 20:37   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сравни (это автору)
Цитата:
constructor Create(C:TCanvas);
и
Цитата:
constructor TShar.Create();
Видишь? кое-чего не хватает. А конкретно параметра.
Цитата:
Конструктору своего класса присвойте флаг overload, т.к. стандартный конструктор TObject не имеет параметров.
Зачем? Он же не наследовать его собирается. и по-моему компилятор даст отлуп на такое в данном случае.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
forward declaration ? intmain Общие вопросы C/C++ 11 10.04.2013 21:20
ошибка [C++ Error] string.h(5): E2344 Earlier declaration of 'String' Pein95 C++ Builder 2 02.04.2013 21:18
Declaration syntax error. Ошибка в С++ Rin Помощь студентам 2 07.09.2011 16:17
[Pascal Error] test_component.pas(43): E2037 Declaration of 'MouseUp' differs from previous declaration Altera Компоненты Delphi 3 10.03.2008 19:44