Delphi→ Количество элементов в IEnumVARIANT

Май 13, 2011

Казалось бы интерфейс IEnumVARIANT всем хорошо — универсальный и простой, но его простота не должна ограничивать функциональность. А она ограничена, так как интерфейс содержит всего 4 метода: Next, Reset, Skip, Clone. Поэтому приходится реализовывать некоторые методы самому.

Один из таких методов — получение количества элементов:

function EnumCount(NewEnum: IInterface): Cardinal;
var
  FEnum: IEnumVariant;
  FCount: ULONG;
  FVariant: OleVariant;
  FIndex: Cardinal;
  FResult: HRESULT;
begin
  FIndex := 0;
  try
    FResult := NewEnum.QueryInterface(IEnumVariant, FEnum);
  except
    FResult := E_FAIL;
  end;
  while SUCCEEDED(FResult) do
  begin
    if not VarIsNull(FVariant) then FVariant := Unassigned;
    if FEnum.Next(1, FVariant, FCount) <> S_OK then Break;
    Inc(FIndex);
  end;
  FEnum := nil;
  Result := FIndex;
end;


В качестве аргумента функции указывается интерфейс _NewEnum.

Пример использования:

ADsGetObject('WinNT://./lanmanserver', IADsFileServiceOperations, Pointer(FRPC));
if EnumCount(FRPC.Sessions._NewEnum) >= 10 then
ShowMessage('Limit sessions');

Порой зайдешь на какой-нибудь сайт и задумаешься — «А кто создал его?!». Ищешь информацию на сайте, как например, форму обратную связь, а там никаких тебе контактных данных. Тут то и пригодиться просмотр ip (или 2ip.ru) информации о домене, на котором расположен сайт. Обычно там указывается дата регистрации домена и что самое главное электронный адрес почтового ящика.

Похожие статьи:

  1. Утечка памяти в IEnumVARIANT
  2. Многопоточность в Delphi
  3. Компоненты в массиве TObjectList
  4. Ускоритель SQLite запросов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *