![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
Beren |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 28.3.2011 Репутация: нет Всего: нет |
Друзья, надо реализовать класс вектор с помощью массива свойств. Это мой вариант . Но он не работает (.
Я хотел бы найти длину вектора, чтобы пользователь вводил только число элементов, и получал длину. После долгих раздумий я понял, что надо использовать динамический массив. Но тут сразу несколько вопросов . Я взял , число элеметов 5. Но как сделать , чтобы пользователь вводил в Edit1 его ? Нашёл пример в интернете про свойства массивы : 3.6.3. Свойства-массивы Кроме обычных свойств в объектах существуют свойства-массивы (array properties). Свойство-массив — это индексированное множество значений. Например, в классе TDelimitedReader множество элементов, выделенных из считанной строки, удобно представить в виде свойства-массива:
Элементы массива Items можно только читать, поскольку класс TDelimitedReader предназначен только для чтения данных из файла. В описании свойства-массива разрешено использовать только методы, но не поля. В этом состоит отличие свойства-массива от обычного свойства. И тут же появились другие вопросы. Почему function GetItem(Index: Integer): string; имеет параметр ?. Ведь если она используется для чтения её вид предопределён ? И он без параметров ? В общем, нужна помощь . Спасибо Это сообщение отредактировал(а) Rrader - 3.6.2011, 10:28 |
||||
|
|||||
Keeper89 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Вот маленькая заготовка такого класса:
Пример использования:
|
||||
|
|||||
Beren |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 28.3.2011 Репутация: нет Всего: нет |
Спасибо, конечно. Но Вам тот же вопрос . Если GetItem используется для чтения, то её формат -функция без параметра. Тогда почуму она у Вас с параметром ?
|
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Beren, нет, она должна быть с параметром, иначе как определить индекс запрашиваемого элемента?
|
|||
|
||||
Beren |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 28.3.2011 Репутация: нет Всего: нет |
Тогда я вообще ничего не понимаю . ТО есть функция в read не обязательно должна быть без параметра ? А почему ж тогда во всех учебниках написано : " Функция чтенения-это функция БЕЗ ПАРАМЕТРА , возвращающее значение того типа, который объявлен для свойства " . Вот чего я никак понять не могу ? Keeper89, объясни пожалуйста.
|
|||
|
||||
Keeper89 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Где это написано? Автор и т.д.? А вообще, глянь еще раз внимаьельно на строчку
и почитай про свойства в хелпе Delphi, там все четко написано. |
||||
|
|||||
Beren |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 28.3.2011 Репутация: нет Всего: нет |
default надо , как я понял для того,чтобы использовать Свойство-массив как основное свойство объекта. Так ? А если го убарать то , как тогда ? |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
default нужен, чтобы обращаться к свойству без указания имени свойства:
|
|||
|
||||
Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Keeper89,
Это сообщение отредактировал(а) Qu1nt - 3.6.2011, 15:50 |
|||
|
||||
RomanEEP |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 1 Всего: 8 |
а где проверка на то что AItems - пустой и 0 элемента попросту не существует?
|
|||
|
||||
Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
RomanEEP, если массив пустой, ничего никуда копироваться не будет. Дополнительная проверка не нужна.
|
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
А с множествами что не так? )
|
|||
|
||||
Beren |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 28.3.2011 Репутация: нет Всего: нет |
Я если я хочу сделать свойство длина вектора , то выдаётся ошибка ( . Исправьте кто сможет Вот мой вариант:
Это сообщение отредактировал(а) Beren - 5.6.2011, 18:08 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Я просто не вижу ничего страшного в такой проверке ![]() |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Keeper89, проверка на длину массива не нужна, потому что он копирует столько элементов сколько в их массиве. Если массив пустой, то это копирование на 0 байт, то есть отсутствие копирования.
Но "множества" же вроде тут не причем, нет? -------------------- Обижено школьников: 8 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Да я не про копирование, а про GetItem.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |