![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() ![]() |
![]() |
Василий1488 |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 1 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здравствуйте!
Возникла такая проблема: Не могу присвоить процедурной переменной метод объекта (пишет неправильное использование функции) На сколько помню, то в делфи для этого при объявлении проц. типа надо указать of object. Как это сделать в турбопаскале? Если никак, то где можно прочитать про то, как происходит вызов метода объекта (есть идея вызвать непосредственно по адресу, но как его заставить обработать нужный объект?)... Заранее спасибо! |
OCTAGRAM |
![]()
Сообщение
#2
|
![]() Концептуал ![]() Группа: Пользователи Сообщений: 20 Пол: Мужской Реальное имя: Иван Левашев Репутация: ![]() ![]() ![]() |
Если никак, то где можно прочитать про то, как происходит вызов метода объекта (есть идея вызвать непосредственно по адресу, но как его заставить обработать нужный объект?)... Да, у меня тоже никак не получилось получить этот адрес, даже в Pointer. По идее, так же, как и у обычных процедур, только указатель на нужный объект первым параметром перед всеми остальными. Тут ещё надо помнить, что переменные процедурных типов вызываются как FAR, а по умолчанию процедуры компилируются как NEAR. Директиву FAR применительно к методам объектов TP не принимает. Либо они всегда FAR, либо это не предусмотрено. Можно попробовать компилировать с {$F+} на всякий случай. -------------------- If you want to get to the top, you have to start at the bottom
|
KIN |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здравствуйте! Возникла такая проблема: Не могу присвоить процедурной переменной метод объекта (пишет неправильное использование функции) На сколько помню, то в делфи для этого при объявлении проц. типа надо указать of object. Как это сделать в турбопаскале? Если никак, то где можно прочитать про то, как происходит вызов метода объекта (есть идея вызвать непосредственно по адресу, но как его заставить обработать нужный объект?)... Заранее спасибо! Для того, чтобы объявить класс на Pascal необходимо воспользоваться ключевым словом Object . Так как класс всегда является типом, делать это можно лишь в Type части программы: Type Class1 = Object {список полей} A: Byte; V: Real; {список методов} Procedure Nothing(Var K: Byte); End; Легко заметить, что поля и методы (общее для них название - члены класса) объявляются очень похоже на поля записи и обычные процедуры/функции. Объекты класса объявляются так же, как и обычные переменные: Var Object1, Object2: Class1; Соотвенно, доступ к полям объекта некоторого класса производится аналогично доступу к полям записи: Object1.V:= Object2.A; Обращение к методам класса производится аналогичным образом: Object1.Nothing(Object1.A); |
![]() ![]() |
![]() |
Текстовая версия | 12.09.2024 13:50 |