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