powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Реализация функции поиска в массиве
3 сообщений из 3, страница 1 из 1
Реализация функции поиска в массиве
    #39460023
nup4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу функцию поиска элемента в массиве с использованием `generics`:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
    class function myclass.pos<T>(arr: array of T; element: T): integer;
    var
    	i: integer;
    begin
        for i := 0 to high(arr) do
            if (arr[i] = element) then exit(i);
    end;



Конечно же, на этапе сравнения получаю:

авторOperator not applicable to this operand type

Можно ли как-то обойти это, реализовав универсальную функцию поиска в массиве? Не страшно, если массив при этом не сможет содержать в себе объектов.
...
Рейтинг: 0 / 0
Реализация функции поиска в массиве
    #39460027
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nup4ikПишу функцию поиска элемента в массиве с использованием `generics`:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
    class function myclass.pos<T>(arr: array of T; element: T): integer;
    var
    	i: integer;
    begin
        for i := 0 to high(arr) do
            if (arr[i] = element) then exit(i);
    end;



Конечно же, на этапе сравнения получаю:

авторOperator not applicable to this operand type

Можно ли как-то обойти это, реализовав универсальную функцию поиска в массиве? Не страшно, если массив при этом не сможет содержать в себе объектов.

Можно

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
unit System.Generics.Collections;

function TList<T>.IndexOf(const Value: T): Integer;
var
  i: Integer;
begin
  for i := 0 to Count - 1 do
    if FComparer.Compare(FItems[i], Value) = 0 then
      Exit(i);
  Result := -1;
end;
...
Рейтинг: 0 / 0
Реализация функции поиска в массиве
    #39461958
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nup4ik,

от туда же готовое, то что тебе нужно

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  TArray = class
  private
    class procedure QuickSort<T>(var Values: array of T; const Comparer: IComparer<T>;
      L, R: Integer);
  public
    class procedure Sort<T>(var Values: array of T); overload;
    class procedure Sort<T>(var Values: array of T; 
      const Comparer: IComparer<T>); overload;
    class procedure Sort<T>(var Values: array of T; 
      const Comparer: IComparer<T>; Index, Count: Integer); overload;

    class function BinarySearch<T>(const Values: array of T; const Item: T;
      out FoundIndex: Integer; const Comparer: IComparer<T>; 
      Index, Count: Integer): Boolean; overload;
    class function BinarySearch<T>(const Values: array of T; const Item: T;
      out FoundIndex: Integer; const Comparer: IComparer<T>): Boolean; overload;
    class function BinarySearch<T>(const Values: array of T; const Item: T;
      out FoundIndex: Integer): Boolean; overload;
  end;
  
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Реализация функции поиска в массиве
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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