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

Вниз

Помогите описать класс   Найти похожие ветки 

 
VJar   (2003-11-08 11:30) [0]

Хочу создать класс, который был бы похож на массив, например

type
TMyClass = class
...
end;
var
MC: TMyClass;
...
Хочу обращаться к элементам класса таким образом: MC[Индекс]
Добавлять, например, MC.add( Element )

Как такое можно сделать?


 
Lmz ©   (2003-11-08 11:47) [1]

Мало ли что ты хочешь. Обращаться MC[Индекс] ты можешь только если создашь массив объектов

MC: array of TMyClass;

А воообще возьми книжку Тейксера и Пачеко и почитай - много нового узнаешь и не будешь таких глупых вопросов задавать.


 
MBo ©   (2003-11-08 12:04) [2]

Посмотри в хелпе об индексированных свойствах (Array properties) и свойствах по умолчанию ( default)
Реализация - см, например, исходники TList или TStrings


 
mOOx_ ©   (2003-11-08 12:12) [3]

Во-во, и не слущай всяких ламазоидов :)
type
TMyClass = class
...
public
property Items[i]: integer read ... write ...; default;
end;
var
MC: TMyClass;

Кажися так. Может и не так немного, не помню уже. Вообщем...
Удачи


 
Anatoly Podgoretsky ©   (2003-11-08 13:33) [4]

VJar (08.11.03 11:30)
Ты уже получил ответ на исходниках.ру, недостаточно?


 
Lmz ©   (2003-11-08 14:50) [5]

mOOx_ © (08.11.03 12:12) [3]

слушай, хакер. Ты хочешь сказать, что после
property Items[i]: integer read ... write ...; default;

можно будет обращаться MC[Индекс]?

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


 
Anatoly Podgoretsky ©   (2003-11-08 14:56) [6]

Lmz © (08.11.03 14:50) [5]
Читать справку, до полного понимания default

Воздержаться от оскорблений, а то в ответ можно получить соответстующию характеристику, при том не важно будет ли она соответствовать умственному развитию.


 
mOOx_ ©   (2003-11-08 15:01) [7]

Может объявлено и не правильно (по памяти не очень получается :) ), но то, что работать будет (если правильно объявить :) ), это 100%. АП уже линканул :). Да и не надо справки никакой. В сорцы глянуть достаточно.
Удачи.


 
Palladin ©   (2003-11-08 15:27) [8]


> mOOx_ © (08.11.03 15:01) [7]

Память тебя почти не обманула.

type
TMyClass = class
...
private
function lcGetItem(nIndex: integer):integer;
procedure lcSetItem(nIndex: integer;value:integer);
public
property Items[i :integer]: integer read lcGetItem write lcSetItem; default;
end;
var
MC: TMyClass;


Можно также вместо integer поставить string или real или любой другой тип, также и состав индекса может быть разный, например:

private
function lcGetItem(nIndex:integer;const s:string):integer;
procedure lcSetItem(nIndex:integer;const s:string;value:integer);
public
property Items[i:integer;const s:string]:integer ...

Фактически это ничем не отличается от объявления параметров функции.


 
Lmz ©   (2003-11-08 19:20) [9]

И что, при дефаулт MC будет тоже самое, что и MC.Items ?


 
Vuk ©   (2003-11-08 19:36) [10]

to Lmz:
Читайте Help, только внимательно. Там все написано. Еще помогает изучение исходников и вообще всяческой полезной литературы. :o)


 
Palladin ©   (2003-11-08 19:36) [11]

да

property Items[i:integer;const s:string]:integer ...; default;

var
mc:TMyClass;

mc[1,"blabla"] равнозначно mc.Items[1,"blabla"];



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

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

Наверх




Память: 0.49 MB
Время: 0.018 c
1-65840
ККВ
2003-11-06 13:41
2003.11.20
Оболочка для CD


3-65732
Виталя
2003-10-31 10:35
2003.11.20
Необязательный параметр хранимой процедуры


3-65750
Sodom
2003-10-31 14:51
2003.11.20
Как ускорить работу по сети с FireBird?


1-65829
S@b@k@.
2003-11-10 04:36
2003.11.20
массив компонентов


1-65866
Jack
2003-11-09 14:34
2003.11.20
Возвращаясь к хинтам!