|
|
|
Обобщенная процедура
|
|||
|---|---|---|---|
|
#18+
У меня возникла задача сортировки массива, но имеется два массива разных типов. Чтобы не писать одинаковый код два раза, хочу применить обобщенную процедуру. Раньше этого не делал, тема для меня новая. Хотел начать с объявления самой процедуры. Первый раз написал так: Код: pascal 1. 2. Здесь компилятор выдает ошибку, что SortDEC_ неизвестная директива. Потом написал так: Код: pascal 1. 2. 3. Так вроде не ругается на этот участок кода. Хотел спросить, только так объявляются обобщенные процедуры, т.е. как класс? А потом хотел написать сам код процедуры, объявив заголовок так: Код: pascal 1. 2. 3. 4. Но SortDeC_ компилятор не видит. Я просто пример брал с книги где написано объявление функции, но там доп. параметры еще, т.к. она значение возвращает. Хотел спросить как описать процедуру, и как передать ей значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2020, 15:47 |
|
||
|
Обобщенная процедура
|
|||
|---|---|---|---|
|
#18+
Посмотри как реализован TList.CustomSort. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2020, 15:53 |
|
||
|
Обобщенная процедура
|
|||
|---|---|---|---|
|
#18+
я посмотрел в модуле system.generics.collection на класс ТArray и процедуру Sort. Написал так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Т.е. угловые скобки не добавил, а в самом типе убрал. Ну т.е. процедуры и функции должны как класс объявляться, только в моем случае в отличие от TArray я должен объявить тип процедуры как класс. Вроде не ругается сейчас компилятор. А обращение к процедуре я думаю должно быть так : Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2020, 16:23 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2038196]: |
0ms |
get settings: |
4ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
177ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 452ms |

| 0 / 0 |
