| 
| 
 | Вопрос # 3 585/ вопрос открыт / | 
 |  Здравствуйте!Подскажите
 1) можно ли написать процедуру, на создание процедур?
 Например все машины которые едут с лево на право, имеют одну и туже модель поведения, но для каждой приходится писать новую процедуру. Можно ли чтоб процедура сама создаваась? (Автоматически во время работы программы).
 2) Одна машина - это 1 компанент (image). Можно ли сделать так, чтобы программа копировала рисунок в некотором количестве, а потом их удоляла? (Автоматически во время работы программы).
 
 Спасибо за помощь!..Х)
 
|  |   Вопрос задал: Волк (статус: Посетитель)Вопрос отправлен: 25 декабря 2009, 23:36
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 4; последнее сообщение — 26 декабря 2009, 22:27; участников в обсуждении: 3. 
|   | Егор (статус: 10-ый класс), 26 декабря 2009, 00:17 [#1]: Цитата (Волк): можно ли написать процедуру, на создание процедур нет, нельзя. паскаль и дельфи - это компилируемые языки, а не интерпретируемые.
 
 Цитата (Волк): Например все машины которые едут с лево на право, имеют одну и туже модель поведения, но для каждой приходится писать новую процедуру. Можно ли чтоб процедура сама создаваась? (Автоматически во время работы программы). глупое решение - создавать несколько процедур. процедура должна быть одна, но с разными параметрами.
 
 рисунки копировать можно
 Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.— Donald E. Knuth.
 |  
|   | min@y™ (статус: Доктор наук), 26 декабря 2009, 11:01 [#2]: Цитата (Волк): 2) Одна машина - это 1 компанент (image). Можно ли сделать так, чтобы программа копировала рисунок в некотором количестве, а потом их удоляла? (Автоматически во время работы программы). 
 Да, можно.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Егор (статус: 10-ый класс), 26 декабря 2009, 15:34 [#3]: Цитата (Волк): ...все машины которые едут с лево на право, имеют одну и туже модель поведения, но для каждой приходится писать новую процедуру... Код в студию - разберём, подскажем.
 
 
 Цитата (Волк): ...Можно ли чтоб процедура сама создаваась? (Автоматически во время работы программы)... Я думаю, ответ на данный вопрос ("да, можно" или "нет, нельзя") вас не устроит?
 
 Поэтому давайте код. Посмотрим, посоветуем.
 Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.— Donald E. Knuth.
 |  
|   | Волк (статус: Посетитель), 26 декабря 2009, 22:27 [#4]:а как копирование сделать? 
 Программа состоит их 2-х unit, 1-й строит внешний вид и обеспецивает работу светофора. А 2-й обеспецивает движение машин, пока только 3 машины (вертекальное и 2 горизонтальных движения). (код достаточно преметивный).
 код unit2:
 
 unit Unit2;
 
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Unit1, ExtCtrls;
 
 type
 TForm2 = class(TForm)
 Timer1: TTimer;
 procedure Timer1Timer(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 
 var
 Form2: TForm2;
 i,j,i1,j1:integer;
 const
 a1=65;
 a2=120;
 implementation
 
 procedure dvijenie1;
 begin
 if i<460 then
 begin
 Form1.m1.Left:=Form1.m1.Left+2 ;
 i:=i+2;
 end
 else
 begin
 Form1.m1.Left:=-20;
 i:=1;
 end ;
 end;
 
 Procedure dvijenie2;
 begin
 if j>-20 then
 begin
 Form1.m2.Left:=Form1.m2.Left-1 ;
 j:=j-1;
 end
 else
 begin
 Form1.m2.Left:=424;
 j:=424;
 end;
 end;
 
 Procedure dvijenie_vverx;
 begin
 if j1>-20 then
 begin
 Form1.m3.Top:=Form1.m3.Top-1 ;
 j1:=j1-1;
 end
 else
 begin
 Form1.m3.Top:=424;
 j1:=424;
 end;
 end;
 
 {$R *.dfm}
 
 
 
 procedure TForm2.Timer1Timer(Sender: TObject);
 begin
 if (Form1.Image2.Canvas.Brush.Color=rgb(0,255,0)) then
 dvijenie1
 else if Form1.m1.Left>110 then
 dvijenie1
 else  if Form1.m1.Left<15 then
 dvijenie1;
 
 if Form1.Image2.Canvas.Brush.Color=rgb(0,255,0) then
 dvijenie2
 else
 if Form1.m2.Left<330 then
 dvijenie2
 else  if Form1.m2.Left>385 then
 dvijenie2;
 
 if (Form1.Image4.Canvas.Brush.Color=rgb(0,255,0)) then
 dvijenie_vverx
 else
 if Form1.m3.Top<330 then
 dvijenie_vverx
 else  if Form1.m3.Top>385 then
 dvijenie_vverx;
 
 
 
 Timer1.Enabled:=false;
 Timer1.Enabled:=true;
 end;
 
 procedure TForm2.FormCreate(Sender: TObject);
 begin
 form1.Image7.Canvas.Brush.Color:=clAppWorkSpace;
 form1.Image7.Canvas.FloodFill(1,1,clWhite,fsSurface) ;
 form1.Image9.Canvas.Brush.Color:=clAppWorkSpace;
 form1.Image9.Canvas.FloodFill(1,1,clWhite,fsSurface) ;
 i:=Form1.m1.Left;
 j:=Form1.m2.Left;
 j1:=Form1.m3.Top;
 end;
 
 end.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |