Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.46 MB
Время: 0.011 c
1-66005
Ru
2003-11-10 11:16
2003.11.20
Освобождение ресурсов


1-65962
АлексейК
2003-11-10 09:05
2003.11.20
передача параметров в ServiceMain


9-65686
cyborg
2003-05-14 12:09
2003.11.20
Оптимальная сортировка объектов для вывода на экран


1-65814
Uber ASSA
2003-11-11 20:40
2003.11.20
Таблица со специальными символами


4-66174
SH
2003-09-25 19:18
2003.11.20
Устойчивый PopUpMenu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский