Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ООП


GanibalLector ©   (2005-01-18 19:37:00) 

Закончил чтение нескольких глав Буча.Перешел к практике.Появились вопросы.Итак:

1)предположим необходимо создать пару десятков обьектов по некоторому классу.Как бы это правильней сделать?
В данный момент,в голову приходит только одно :

Q1:=TShar.Create;
Q1.SetPosition(50,50);
Q1.SetDirection(-6,6);
//
Q2:=TShar.Create;
Q2.SetPosition(100,100);
Q2.SetDirection(-6,-6);
// и так далее ...


2)коль их пару десятков,то нужно их обьявить.Делаю так :
type
TShar = class
private
//много всего
public
//еще больше
end;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
Q1,Q2,Q3,Q4:TShar;// сократил до четырех
   { Private declarations }
 public
   { Public declarations }
 end;

Чувствую,что можно и нужно проще.

3)и последнее.Мне необходимо передать в класс некоторые значения всех созданных обьектов.Как тут быть ?
Ведь обьектов может быть 5,а может и 25. Думаю использовать array of.


jack128   (2005-01-18 20:13:00) [1]

GanibalLector ©   (18.01.05 20:02) [11]
TForm1 = class(TForm)
  TSharArray :array of TShar;
  procedure FormCreate(Sender: TObject);

как то у тебя не стандартно поле названо ;-)   Published полями могут быть только объекты и интерфейсы.


GanibalLector   (2005-01-18 20:12:00) [2]

Все,догнал.Вроде так :

type
TShar = class
//
end;

TSharArray =array of TShar;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
SharArray: TSharArray;

var
 Form1: TForm1;

implementation


begin...end   (2005-01-18 20:11:00) [3]

> [11] GanibalLector ©   (18.01.05 20:02)

Если нужно, чтобы массив был полем класса формы, то тогда так:

type
 TSharArray = array of TShar;

 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
   SharArray: TSharArray;
 public
 end;


А если нужно, чтобы массив был глобальной переменной в модуле, то так:

type
 TSharArray = array of TShar;

 TForm1 = ...
   ...
 end;

var
 SharArray: TSharArray;


GanibalLector   (2005-01-18 20:02:00) [4]


type
 TForm1 = class(TForm)
   TSharArray :array of TShar;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
SharArray: TSharArray;


Если так,то Expected an identifier but ARRAY fount


begin...end   (2005-01-18 19:59:00) [5]

> [9] GanibalLector ©   (18.01.05 19:57)

Не понял я, а почему просто массив нельзя?


GanibalLector   (2005-01-18 19:57:00) [6]

По поводу [1].Я правильно понял?

type
TShar = class
// много всего
end;

type
TSharArray= class
public
TSharArray :array of TShar;
end;


type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
SharArray: TSharArray;


Anatoly Podgoretsky   (2005-01-18 19:52:00) [7]

GanibalLector а попробуй первести, в названии все сказано.


begin...end   (2005-01-18 19:50:00) [8]

Ну и ещё несколько полезных методов там имеется. Сортировка, например.


begin...end   (2005-01-18 19:48:00) [9]

> [5] GanibalLector ©   (18.01.05 19:46)

> >А еще лучше: использовать TObjectList
> А почему?Мотивируйте,ПЛЗ

Ну, например, его можно настроить так, чтобы объекты автоматически уничтожались при уничтожении списка.


GanibalLector   (2005-01-18 19:46:00) [10]

>А еще лучше: использовать TObjectList
А почему?Мотивируйте,ПЛЗ

З.Ы.Спасибо ALL


raidan   (2005-01-18 19:42:00) [11]

http://www.delphimaster.ru/articles/dyntable/index.html
Полезно будет почитать про array of :)


begin...end   (2005-01-18 19:41:00) [12]

> GanibalLector ©   (18.01.05 19:37)

> Думаю использовать array of.

Ну дык используйте :)


Просто Джо   (2005-01-18 19:40:00) [13]

А еще лучше: использовать TObjectList


Просто Джо   (2005-01-18 19:39:00) [14]

Q1,Q2,Q3,Q4:TShar; // сократил до четырех

type
 TSharArray = array of TShar;
var
 SharArray: TSharArray;


Наверх

Титульная страница Поиск, карта сайта Написать письмо