powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обобщенная процедура
4 сообщений из 4, страница 1 из 1
Обобщенная процедура
    #39972460
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня возникла задача сортировки массива, но имеется два массива разных типов.
Чтобы не писать одинаковый код два раза, хочу применить обобщенную процедуру. Раньше этого не делал, тема для меня новая.
Хотел начать с объявления самой процедуры.
Первый раз написал так:
Код: pascal
1.
2.
  type TSortDEC<Type1>=
       procedure SortDEC_(Param1:Type1);


Здесь компилятор выдает ошибку, что SortDEC_ неизвестная директива.
Потом написал так:
Код: pascal
1.
2.
3.
type TSortDEC<Type1>=class
       class procedure SortDEC_(Param1:Type1);
end;


Так вроде не ругается на этот участок кода. Хотел спросить, только так объявляются обобщенные процедуры, т.е. как класс?
А потом хотел написать сам код процедуры, объявив заголовок так:
Код: pascal
1.
2.
3.
4.
class procedure TSortDEC.SortDEC_(Param1:Type1);
begin

end;


Но SortDeC_ компилятор не видит. Я просто пример брал с книги где написано объявление функции, но там доп. параметры еще,
т.к. она значение возвращает.
Хотел спросить как описать процедуру, и как передать ей значение
...
Рейтинг: 0 / 0
Обобщенная процедура
    #39972464
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри как реализован TList.CustomSort.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Обобщенная процедура
    #39972477
Damir_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я посмотрел в модуле system.generics.collection на класс ТArray и процедуру Sort.
Написал так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
type TSortDEC=class
       class procedure SortDEC_<Type1>(Param1:Type1);
end;

class procedure TSortDEC.SortDEC_<Type1>(Param1:Type1);
begin

end;


Т.е. угловые скобки не добавил, а в самом типе убрал. Ну т.е. процедуры и функции должны как класс объявляться, только в моем случае в отличие от TArray я должен объявить тип процедуры как класс. Вроде не ругается сейчас компилятор.
А обращение к процедуре я думаю должно быть так :
Код: pascal
1.
2.
3.
4.
//сортировка первого массива  
TSortDEC.SortDEC_<TItemVector>(ItemVector)
//сортировка второго массива  
TSortDEC.SortDEC_<TStringVector>(StringVector)
...
Рейтинг: 0 / 0
Обобщенная процедура
    #39972611
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем вам писать сортировку, если уже есть TArray.Sort
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обобщенная процедура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]