![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
klem4 |
![]()
Сообщение
#1
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Как реализовать такое на TP, используя объекты ? Пробовал приведением к типу, не выходит ...
{$mode objfpc} {$mode TP} Добавлено: Вопрос решен ![]() TB(A^).Create; -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Вот в чем тут проблема понять не могу, ситуация такая-же, но теперь у предка и потомка разные конструкторы, в простеньком примере проходит, а чуть посложнее уже не берет, в чем проблема ?
Работает: {$mode TP} Не работает: {$mode TP} -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Bokul |
![]()
Сообщение
#3
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Причина в том, что в наследника есть новые поля, которые при конвертации будут не заполнены и чтобы не произошло ошибки паскаль не даёт делать такое.
Сообщение отредактировано: Bokul - 7.01.2007 22:25 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Type? |
Bokul |
![]()
Сообщение
#5
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
volvo, но он же пытается сделать обратное.
-------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Что "обратное"? Он пытается привести ^TFigure к ^TCircle, и создать экземпляр объекта, или я чего-то не заметил?
В результате что должно получиться? Указатель на предка должен хранить адрес потомка... А я что предложил? |
Bokul |
![]()
Сообщение
#7
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
TB(A^).Create(3); А что мы делаем тут? Выходит VMP предка будет указывать на VMT наследника? Цитата Он пытается привести ^TFigure к ^TCircle, и создать экземпляр объекта, или я чего-то не заметил? Я так и полностью и не понял, запутанно все. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
klem4 |
![]()
Сообщение
#8
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Да, volvo прав, спасибо.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Bokul |
![]()
Сообщение
#9
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата А что мы делаем тут? Выходит VMP предка будет указывать на VMT наследника? Все-равно интересно так будет или нет? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Цитата Выходит VMP предка будет указывать на VMT наследника? Будет, и что в этом особенного? VMT инициализируется в конструкторе, конструктор был вызван для TB, вот и все... Если бы в TCircle не добавились новые поля, в связи с чем размер экземпляра объекта увеличился, можно было бы извращаться так и дальше (хотя New/Dispose придумали в расширенном виде именно для удобства, так почему не пользоваться ими, особенно функциональной, а не процедурной формой New)...НО поскольку поля все же были добавлены - TypeCast (в этом направлении) уже не пройдет... Ты даже сам написал, почему... |
![]() ![]() |
![]() |
Текстовая версия | 8.08.2025 7:25 |