Главная страница
    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.47 MB
Время: 0.011 c
6-66040
Дмитрий П
2003-09-14 13:15
2003.11.20
Управление LAN интернет-соединением.


1-65879
TUser
2003-11-09 02:08
2003.11.20
Abstract error


3-65739
Mamed
2003-10-31 16:37
2003.11.20
DBexpress


3-65691
Davinchi9
2003-10-30 13:44
2003.11.20
Ошибка создания таблици стандарта MsAccess


6-66039
rks
2003-09-24 19:21
2003.11.20
Определение интернет трафика каждого компьютера в сети(отдельно)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский