Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

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

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

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2016, 00:38   #1
lichking
Пользователь
 
Регистрация: 31.10.2016
Сообщений: 54
По умолчанию движение кругов

создаю программу для движения кругов а она выбивает ошибку
Код:
unit Unit5;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls,
  Vcl.Buttons;


type
  TForm5 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    BitBtn1: TBitBtn;
    Timer1: TTimer;
    BitBtn2: TBitBtn;
    procedure Button1Click(Sender: TObject);
    function TIME(Sender: TObject):TTimer;
    function circ(Sender: TObject):TShape;
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}
  var
  n,T:integer;
a: array of TShape;
b,d1: array of TTimer;
e:  TTimer;
C: TShape;
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
form5.Timer1.Enabled:=true;
end;

procedure TForm5.Button1Click(Sender: TObject);

begin


N:=STRTOINT(Edit1.Text);
SetLength(a, n);
SetLength(b, n);
SetLength(d1, n);
for N := 0 to N do
begin
a[n]:=circ(C);
d1[N]:=TIME(E);
end;


end;

function TForm5.circ(Sender: TObject): TShape;
begin
C:=TShape.Create(Form5);
  C.Parent:=Form5;
  C.Left:=random(400);
  C.Top:=random(120);
  C.Width:=160;
  C.Height:=80;
  C.Shape:=stEllipse;
end;
function TForm5.TIME(Sender: TObject): TTimer;
begin
e:=TTimer.Create(Form5);

E.Interval:=1000;
e.Enabled:=TRUE;
E.OnTimer:=Timer1Timer;
end;

procedure TForm5.Timer1Timer(Sender: TObject);
begin
C.Left:=random(400);
c.Top:=random(120);
end;

end.
lichking вне форума Ответить с цитированием
Старый 20.11.2016, 00:42   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,593
По умолчанию

Цитата:
Сообщение от lichking Посмотреть сообщение
а она выбивает ошибку
Какую? На какой строке?
Вадим Мошев вне форума Ответить с цитированием
Старый 20.11.2016, 01:28   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,474
По умолчанию

Что это ?
Код:
b,d1: array of TTimer; // массив таймеров ??
// а потом:
 d1[N]:=TIME(E); //
Функция Time возвращает тип TDateTime, а не TTimer
type_Oleg вне форума Ответить с цитированием
Старый 20.11.2016, 01:50   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,737
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Функция Time возвращает тип TDateTime, а не TTimer
А где ты раньше видел функцию Time с параметром?
northener вне форума Ответить с цитированием
Старый 20.11.2016, 02:05   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,474
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А где ты раньше видел функцию Time с параметром?
А.. ну да.
Да еще и параметр типа TTimer

PS А вобще-то у него своя функция TForm5.TIME
Но все равно непонятно, зачем плодить таймеры.

Последний раз редактировалось type_Oleg; 20.11.2016 в 02:12.
type_Oleg вне форума Ответить с цитированием
Старый 20.11.2016, 09:15   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Цитата:
А вобще-то у него своя функция TForm5.TIME
Которая вдобавок ко всему ни чего не возвращает. И вообще код zero
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.11.2016, 10:28   #7
lichking
Пользователь
 
Регистрация: 31.10.2016
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Которая вдобавок ко всему ни чего не возвращает. И вообще код zero
я пытался сначала двигать круги одним таймером на форме но получалось двигать токо один круг потом создал для массив чтобы каждый круг двигать 1-м таймером и в обработчик событий я присвоил событие таймера который на форме с уже написанной процедурой

перезагрузил делфи но двигает только один круг а если справить вот так:

Код:
unit Unit5;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.ExtCtrls,
  Vcl.Buttons;


type
  TForm5 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    BitBtn1: TBitBtn;
    Timer1: TTimer;
    BitBtn2: TBitBtn;
    procedure Button1Click(Sender: TObject);
    function TIME(Sender: TObject):TTimer;
    function circ(Sender: TObject):TShape;
    procedure Timer1Timer(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;
n,T:integer;
a: array of TShape;
b,d1: array of TTimer;
e:  TTimer;
C: TShape;
implementation

{$R *.dfm}


procedure TForm5.BitBtn1Click(Sender: TObject);
begin
form5.Timer1.Enabled:=true;
end;

procedure TForm5.Button1Click(Sender: TObject);

begin


N:=STRTOINT(Edit1.Text);
SetLength(a, n);
SetLength(b, n);
SetLength(d1, n);
for N := 0 to N do
begin
a[n]:=circ(C);
d1[N]:=TIME(E);
end;


end;

function TForm5.circ(Sender: TObject): TShape;
begin
C:=TShape.Create(Form5);
  C.Parent:=Form5;
  C.Left:=random(400);
  C.Top:=random(120);
  C.Width:=160;
  C.Height:=80;
  C.Shape:=stEllipse;
end;
function TForm5.TIME(Sender: TObject): TTimer;
begin
e:=TTimer.Create(Form5);

E.Interval:=1000;
e.Enabled:=TRUE;
E.OnTimer:=Timer1Timer;
end;

procedure TForm5.Timer1Timer(Sender: TObject);
var
 f,i:integer;
begin
f:=random(400);
i:=random(120);

a[n].Left+f;
a[n].Top+i;

end;

end.
то
Checking project dependencies...
Compiling Project2.dproj (Debug, Win32)
dcc32 command line for "Project2.dpr"
c:\program files (x86)\embarcadero\studio\18.0\bin\d cc32.exe -$O- -$W+ --no-config -M -Q -TX.exe -AGenerics.Collections=System.Generi cs.Collections;
Generics.Defaults=System.Generics.D efaults;WinTypes=Winapi.Windows;Win Procs=Winapi.Windows;DbiTypes=BDE;D biProcs=BDE;DbiErrs=BDE -DDEBUG
-E.\Win32\Debug -I"c:\program files (x86)\embarcadero\studio\18.0\lib\W in32\debug";"c:\program files (x86)\embarcadero\studio\18.0\lib\W in32\release";
C:\Users\VV\Documents\Embarcadero\S tudio\18.0\Imports;"c:\program files (x86)\embarcadero\studio\18.0\Impor ts";
C:\Users\Public\Documents\Embarcade ro\Studio\18.0\Dcp;"c:\program files (x86)\embarcadero\studio\18.0\inclu de"
-LEC:\Users\Public\Documents\Embarca dero\Studio\18.0\Bpl -LNC:\Users\Public\Documents\Embarca dero\Studio\18.0\Dcp -NU.\Win32\Debug -NSWinapi;
System.Win;Data.Win;Datasnap.Win;We b.Win;Soap.Win;Xml.Win;Bde;System;X ml;Data;Datasnap;Web;Soap;Vcl;Vcl.I maging;Vcl.Touch;Vcl.Samples;Vcl.Sh ell;
-O"c:\program files (x86)\embarcadero\studio\18.0\lib\W in32\release";C:\Users\VV\Documents \Embarcadero\Studio\18.0\Imports;"c :\program files
(x86)\embarcadero\studio\18.0\Impor ts";C:\Users\Public\Documents\Embar cadero\Studio\18.0\Dcp;"c:\program files (x86)\embarcadero\studio\18.0\inclu de"
-R"c:\program files (x86)\embarcadero\studio\18.0\lib\W in32\release";C:\Users\VV\Documents \Embarcadero\Studio\18.0\Imports;"c :\program files
(x86)\embarcadero\studio\18.0\Impor ts";C:\Users\Public\Documents\Embar cadero\Studio\18.0\Dcp;"c:\program files (x86)\embarcadero\studio\18.0\inclu de"
-U"c:\program files (x86)\embarcadero\studio\18.0\lib\W in32\debug";"c:\program files (x86)\embarcadero\studio\18.0\lib\W in32\release";
C:\Users\VV\Documents\Embarcadero\S tudio\18.0\Imports;"c:\program files (x86)\embarcadero\studio\18.0\Impor ts";
C:\Users\Public\Documents\Embarcade ro\Studio\18.0\Dcp;"c:\program files (x86)\embarcadero\studio\18.0\inclu de" -V -VN
-NBC:\Users\Public\Documents\Embarca dero\Studio\18.0\Dcp -NHC:\Users\Public\Documents\Embarca dero\Studio\18.0\hpp\Win32 -NO.\Win32\Debug
Project2.dpr
[dcc32 Warning] Unit5.pas(55): W1019 For loop control variable must be simple local variable
[dcc32 Warning] Unit5.pas(73): W1035 Return value of function 'TForm5.circ' might be undefined
[dcc32 Warning] Unit5.pas(81): W1035 Return value of function 'TForm5.TIME' might be undefined
[dcc32 Error] Unit5.pas(90): E2014 Statement expected, but expression of type 'Integer' found
[dcc32 Error] Unit5.pas(91): E2014 Statement expected, but expression of type 'Integer' found
[dcc32 Fatal Error] Project2.dpr(5): F2063 Could not compile used unit 'Unit5.pas'
lichking вне форума Ответить с цитированием
Старый 20.11.2016, 15:41   #8
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,474
По умолчанию

Ну нужны эти массивы таймеров. Я как-то сделал случайное движение пузырей. Не очень красиво, но работает. Можно взять за основу. Вот, смотрите:
Вложения
Тип файла: rar pu.rar (160.8 Кб, 13 просмотров)
type_Oleg вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ движение планеты в системе двойной звезды или движение трех тел anpolol Помощь студентам 4 10.06.2016 02:08
рисование кругов в делфи Gal4onOK))) Помощь студентам 0 15.02.2012 13:18
Пересечение кругов courant D'AIR Помощь студентам 7 05.10.2011 22:43
Нумерация кругов Lifefine Общие вопросы Delphi 13 05.02.2011 22:36
Pascal. Площадь пересечения кругов TOSAgrk Помощь студентам 1 05.02.2009 04:23