Перегрузка Sort
, которую вы должны использовать, - это:
procedure Sort(const AComparer: IComparer<TMyRecord>);
Теперь вы можете создать IComparer<TMyRecord>
, вызвав TComparer<TMyRecord>.Construct
. Например:
var
Comparison: TComparison<TMyRecord>;
....
Comparison :=
function(const Left, Right: TMyRecord): Integer
begin
Result := Left.intVal-Right.intVal;
end;
List.Sort(TComparer<TMyRecord>.Construct(Comparison));
Я написал функцию Comparison
как анонимный метод, но вы также можете использовать обычную функцию non-OOP для старого стиля или метод объекта.
. Одна потенциальная проблема с вашей функцией сравнения заключается в том, что вы можете страдать от переполнения целого числа. Таким образом, вместо этого вы можете использовать целочисленный компаратор по умолчанию.
Comparison :=
function(const Left, Right: TMyRecord): Integer
begin
Result := TComparer<Integer>.Default.Compare(Left.intVal, Right.intVal);
end;
Возможно, было бы дорого вызывать TComparer<Integer>.Default
несколько раз, чтобы вы могли сохранить его в глобальной переменной:
var
IntegerComparer: IComparer<Integer>;
....
initialization
IntegerComparer := TComparer<Integer>.Default;
Еще один вариант, который следует учитывать, - это передать в компаньон при создании списка. Если вы только сортируете список, используя этот порядок, то это более удобно.
List := TList<TMyRecord>.Create(TComparer<TMyRecord>.Construct(Comparison));
И затем вы можете отсортировать список с помощью
List.Sort;
Если сервер Postgresql работает под Windows так же, как и клиенты, то вы можете протестировать это, чтобы увидеть, работает ли это:
host all all 0.0.0.0/0 sspi
Магнус Хагандер, разработчик Postgresql, рассказывает об этом:
"Все пользователи, подключающиеся с локальной машины, вашего домена или доверенного домена, будут автоматически аутентифицированы с помощью настроенной аутентификации SSPI (вы можете включить/выключить такие вещи, как NTLMv2 или LM с помощью групповой политики - это настройка Windows, а не PostgreSQL). Вам все еще нужно создать роль входа в PostgreSQL, но это все. Обратите внимание, что домен не проверяется вообще, только имя пользователя. Поэтому пользователь Administrator в вашем основном и доверенном домене будет считаться одним и тем же пользователем, если он попытается подключиться к PostgreSQL. Обратите внимание, что этот метод не совместим с клиентами Unix."
Если вы смешиваете Unix-Windows, то вам придется прибегнуть к kerberos с использованием GSSAPI, что означает, что вам придется выполнить некоторые настройки. Эта статья о развертывании Pg в среде Windows может направить вас на правильный путь.