| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Новые Классы и указатели на них. |
| Автор: Ner-zul 28.4.2007, 14:39 |
Добрый день. Вот столкнулся с проблемой . Я Работаю в Дельфи 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) А также использование указателей на классы в качестве параметров функций и процедур. |
| Автор: Snowy 28.4.2007, 14:46 |
| Стоп! Для начала разберись с понятиями класс и объект. Это разные вещи, а ты их тщательно перепутал. |
| Автор: Ner-zul 28.4.2007, 14:50 |
| Нее.. я все четко понимаю. Я не перепутал. Класс - это в моем примере :newclass. А объект этого класса я конечно кривенько назвал myclass. Ну? так ведь? |
| Автор: Snowy 28.4.2007, 14:57 |
| Это не создание объекта, а объявление переменной. Для создания нужно вызвать конструктор. Кстати, объект это уже указатель. Поэтому совершенно не понятно, зачем тебе указатель на указатель... Добавлено @ 15:03 Какое-то всё плю-плюснотое. Указатели, массив чаров... Всё как-то спутано. Пример нарисовать не трудно. Только пример чего? Что именно нужно? Попробуй объяснить заново в 3-х предложениях, без кода. |
| Автор: Ner-zul 4.5.2007, 11:50 |
Да...я видимо запутался. Тогда попробую совсем по-простому, не могли бы Вы привести мне пример создания простенького класса, а потом создание объекта этого класса и его использование в процедуре какой-нибудь. Например. Пусть класс описывает объекты с одним полем чисел и одним строковым полем. А процедура меняет численные значения двух объектов местами. |
| Автор: skyboy 4.5.2007, 12:14 | ||
Может, излишне подробно |
| Автор: Yanis 4.5.2007, 13:23 |
Ошибаешься. Это экземпляры… Называй из переменными, собственно что и означает var перед ними. Зачем указатель на класс, если класс собсно и есть указатель? Неужели так трудно посмотреть к примеру вот так SizeOf(TForm)? |
| Автор: Ner-zul 11.5.2007, 15:14 |
мм... Мне кажется я во всем разобрался. Всем большое спасибо! А вот такой вопрос теперь. В Дельфи есть аналог сишной структуры: typedef struct{}; ???? Я так понимаю в си есть отдельно классы и отдельно структуры, которые из себя представляют некое подобие классов. так? В Дельфи есть классы. С этим мы уже разобрались=) А есть ли в Дельфи что-то похожее на структуры? |
| Автор: Snowy 11.5.2007, 15:22 |
| Модератор: Пожалуйста, один топик - один вопрос. record |
| Автор: MetalFan 11.5.2007, 15:24 | ||
|
| Автор: Ner-zul 11.5.2007, 15:24 |
| Извините. и Спасибо Тема закрыта. |