Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
указатель на процедуру - нужны комментарии
|
|||
|---|---|---|---|
|
#18+
На практике пока никогда не требовалось работать с указателями на процедуры (функции), но вот разбираясь с примером из ODAC Threads, натолкнулся на код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Меня поставила в тупик строка TMethod(MethodDesc^.Method)(MethodDesc.ObjectPtr); Немного подумав, я осознал, что здесь просто вызывается процедура, на которую указывает указатель Method, для чего этот указатель приводится к типу TMethod, а в качестве параметра передаётся некий указатель на объект ObjectPtr. Мне показалась странной такая запись, более подходящей была бы: TMethod(MethodDesc^.Method(MethodDesc.ObjectPtr)); Но не тут-то было, при такой записи юнит вообще не компилируется! Подскажите, где я заблуждаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 14:56 |
|
||
|
указатель на процедуру - нужны комментарии
|
|||
|---|---|---|---|
|
#18+
:) Что такое TMetod? Это процедурный тип. То есть, если бы вы объявили перменную этого типа, то это была бы процедура: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Теперь смотрим, что делает запись TMethod(MethodDesc^.Method). Она преобразует MethodDesc^.Method к типу TMethod, то есть указывает компилятору на то, какие дальше будут у процедуры параметры. А вторые скобки (MethodDesc.ObjectPtr), это собственно параметр, передаваемый внутрь процедуры. В общем, всё в модуле написано правильно, но выглядит, пока не разберёшся, действительно странно. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 16:25 |
|
||
|
указатель на процедуру - нужны комментарии
|
|||
|---|---|---|---|
|
#18+
Господи, когда же я стану более внимателен!! Конечно же указатель надо сначала привести к типу TMethod (указатель на процедуру), а потом уже передавать параметр процедуре, а в строке TMethod(MethodDesc^.Method(MethodDesc.ObjectPtr)); я пытался передать параметр какому-то указателю, а потом привести это к TMethod! Глупость какая.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2003, 17:34 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32240724&tid=2117262]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 309ms |

| 0 / 0 |
