Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

ООП   Найти похожие ветки 

 
GanibalLector ©   (2005-01-18 19:37) [0]

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

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.


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

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

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


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

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


 
begin...end ©   (2005-01-18 19:41) [3]

> GanibalLector ©   (18.01.05 19:37)

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

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


 
raidan ©   (2005-01-18 19:42) [4]

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


 
GanibalLector ©   (2005-01-18 19:46) [5]

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

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


 
begin...end ©   (2005-01-18 19:48) [6]

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

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

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


 
begin...end ©   (2005-01-18 19:50) [7]

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


 
Anatoly Podgoretsky ©   (2005-01-18 19:52) [8]

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


 
GanibalLector ©   (2005-01-18 19:57) [9]

По поводу [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;


 
begin...end ©   (2005-01-18 19:59) [10]

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

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


 
GanibalLector ©   (2005-01-18 20:02) [11]


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 20:11) [12]

> [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:12) [13]

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

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


 
jack128 ©   (2005-01-18 20:13) [14]

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

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



Страницы: 1 вся ветка

Текущий архив: 2005.01.30;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.046 c
14-1105421027
Layner
2005-01-11 08:23
2005.01.30
Здравствуйте! Вот проблемка есть, есть 2 exe файла


1-1104789712
Colonel
2005-01-04 01:01
2005.01.30
Меню рабочего стола


8-1095095132
maxistent
2004-09-13 21:05
2005.01.30
Сравнивание TBitMap


3-1104229600
denis24
2004-12-28 13:26
2005.01.30
тип поля datetime


4-1102494711
dr Tr0jan
2004-12-08 11:31
2005.01.30
Управление процессом (сервисом)