Форум: "Основная";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
ВнизООП Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.057 c