![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
Добрый день. Вот столкнулся с проблемой . Я Работаю в Дельфи 6-7. Я хочу создать свой класс , к примеру, с двумя полями только: i:integer; mas: array [1..Max] of char; , где константа Max = 10; Я так понимаю пишется это вот так: const Max = 10; type newclass = class i:integer; mas: array [1..Max] of char; end; Теперь я хочу создать указатель на свой класс, наверно это делается так: type Pnewclass = ^newclass ; Если я не прав где-то - просьба меня поправить. Так как я этим материалом не владею и хочу разобраться. Теперь я создам объекты : var myclass:newclass; pmyclass:pnewclass; Теперь я хочу сделать так чтобы мой указатель указывал на объект моего класса, наверно это делается вот так: pmyclass:=pointer(myclass); или pmyclass^:=myclass; Опять же , я не уверен. Теперь, у меня есть какая-то процедура, в которую я в качестве параметров хочу передавать объекты своего класса. procedure MyProcedure (parametr1:newclass, parametr2:newclass); Пусть я хочу сделать процедуру, которая будет менять два моих объекта местами. Тоесть их взаимно перезаписывать через тертий буферный объект. А тогда , очевидно , что мне надо передавать как параметры процедуры именно Указатели на мои объекты и выглядеть это должно что-то типа того: procedure MyProcedure (Pobject1:Pnewclass, Pobject2:Pnewclass); 0) Ведь так? Мои рассуждения верны? К сожалению практика показывает , что данная реализация не жизнеспособна. Более того, у меня серьезные подозрения, что я не правильно работаю с классами: создаю их, описываю и использую. Покажите пожалуйста: 1) пример создания и использования классов . 2) А также использование указателей на классы в качестве параметров функций и процедур. --------------------
Ner-zul |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
Стоп!
Для начала разберись с понятиями класс и объект. Это разные вещи, а ты их тщательно перепутал. |
|||
|
||||
| Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
Нее.. я все четко понимаю. Я не перепутал.
Класс - это в моем примере :newclass. А объект этого класса я конечно кривенько назвал myclass. Ну? так ведь? --------------------
Ner-zul |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
Это не создание объекта, а объявление переменной.
Для создания нужно вызвать конструктор. Кстати, объект это уже указатель. Поэтому совершенно не понятно, зачем тебе указатель на указатель... Добавлено @ 15:03 Какое-то всё плю-плюснотое. Указатели, массив чаров... Всё как-то спутано. Пример нарисовать не трудно. Только пример чего? Что именно нужно? Попробуй объяснить заново в 3-х предложениях, без кода. |
|||
|
||||
| Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
Да...я видимо запутался. Тогда попробую совсем по-простому, не могли бы Вы привести мне пример создания простенького класса, а потом создание объекта этого класса и его использование в процедуре какой-нибудь. Например. Пусть класс описывает объекты с одним полем чисел и одним строковым полем. А процедура меняет численные значения двух объектов местами. --------------------
Ner-zul |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
Может, излишне подробно |
|||
|
||||
| ama_kid |
|
||||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 9 Всего: 95 |
Лови пример:
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
||||
|
|||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 6 Всего: 111 |
Ошибаешься. Это экземпляры… Называй из переменными, собственно что и означает var перед ними. Зачем указатель на класс, если класс собсно и есть указатель? Неужели так трудно посмотреть к примеру вот так SizeOf(TForm)? |
|||
|
||||
| Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
мм... Мне кажется я во всем разобрался. Всем большое спасибо! А вот такой вопрос теперь. В Дельфи есть аналог сишной структуры: typedef struct{}; ???? Я так понимаю в си есть отдельно классы и отдельно структуры, которые из себя представляют некое подобие классов. так? В Дельфи есть классы. С этим мы уже разобрались=) А есть ли в Дельфи что-то похожее на структуры? --------------------
Ner-zul |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
||||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
| Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
Извините.
и Спасибо Тема закрыта. --------------------
Ner-zul |
|||
|
||||
![]()
|
| Правила форума "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. |