|
|
|
Универсальная передача указателя
|
|||
|---|---|---|---|
|
#18+
Есть функция, которая в разных версиях Delphi определена разными способами Код: pascal 1. 2. 3. вопрос: как написать код с минимальным количеством {$IFDEF}, который бы вызывал эту функцию в разных версиях С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 21:14 |
|
||
|
Универсальная передача указателя
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Есть функция, которая в разных версиях Delphi определена разными способами Код: pascal 1. 2. 3. вопрос: как написать код с минимальным количеством {$IFDEF}, который бы вызывал эту функцию в разных версиях С уважением, Vasilisk Первые два, по-идее, можно вызвать func(@Value), где Value - это PByte, например. А для третьего можно заифдефить PByte(Value). Итого что-то вроде Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 21:37 |
|
||
|
Универсальная передача указателя
|
|||
|---|---|---|---|
|
#18+
alekcvp А третий точно var AParam: P Byte? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 21:42 |
|
||
|
Универсальная передача указателя
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ alekcvp А третий точно var AParam: P Byte? Не заметил PP в первых двух, я отредактировал ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 21:44 |
|
||
|
Универсальная передача указателя
|
|||
|---|---|---|---|
|
#18+
Пока сделал так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 21:46 |
|
||
|
Универсальная передача указателя
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ вопрос: как написать код с минимальным количеством {$IFDEF}, который бы вызывал эту функцию в разных версиях Думаю, это не самый важный из вопросов. Отвечу так. Если стоит цель вызывать её из многих мест кода, компилируемого в разных версиях Delphi, то я сделал бы для неё функцию-обёртку, куда и упаковал бы парочку ifdef-ов. Если же нужно вызывать её однажды, то реализацию этой обёртки можно просто написать в месте вызова. В любом случае, стремиться нужно не к "минимальному количеству ifdef-ов", а к максимальной надёжности и сопровождаемости этого фрагмента кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2020, 21:55 |
|
||
|
Универсальная передача указателя
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, и дальше что, при каждом чихе на param зелёнку разливать? Выбери для себя один вариант и дальше так и пиши. Логика работы этих 'func' то одинаковая, или как? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. PS Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2020, 05:03 |
|
||
|
Универсальная передача указателя
|
|||
|---|---|---|---|
|
#18+
Я за обертку как советует softwarer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2020, 13:50 |
|
||
|
Универсальная передача указателя
|
|||
|---|---|---|---|
|
#18+
softwarer В любом случае, стремиться нужно не к "минимальному количеству ifdef-ов", а к максимальной надёжности и сопровождаемости этого фрагмента кода. Bred eFeM Выбери для себя один вариант и дальше так и пиши. _Vasilisk_ функция, которая в разных версиях Delphi определена разными способами Bred eFeM Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2020, 15:56 |
|
||
|
Универсальная передача указателя
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Так не получится. Функция - метод интерфейса. А заморачиваться с TMethod еще хуже Ну блин. Сразу надо было говорить. Тогда только так intf.EvilMethod({$IFNDEF EvilMethodUsesVar}@{ENDIF}Param); либо через наследника ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2020, 18:19 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39932335&tid=2038535]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 327ms |

| 0 / 0 |
