![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ООП
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;