Как я могу проверить тип перечисляемого элемента IStorage в Delphi?

Мне нужно работать с IStorage а также IStream интерфейсы в Delphi 7. Мне нужен список имен хранилищ и потоков в экземплярах IStorage. Если я попытаюсь собрать их так:

procedure TStorageUtility.collectElementNamesByType( iStg_ : IStorage; names_ : TStringList; type_ : byte );
var
  enum : IEnumSTATSTG;
  rec : StatStg;
  num : integer;
begin
  if ( iStg_.enumElements( 0, NIL, 0, enum ) = S_OK ) then
    while ( enum.next( 1, rec, @num ) = S_OK ) do
    begin
      if ( rec.type = type_ ) then
        names_.add( wideString( rec.pwcsName ) );
    end;
end;

Я получаю ошибку компилятора:

Identifier expected but 'TYPE' found

на линии

if ( rec.type = type_ ) then

Вот определение записи STATSTG: https://msdn.microsoft.com/en-us/library/windows/desktop/aa380319(v=vs.85).aspx

Как проверить тип записи без сообщения об ошибке компилятора?

1 ответ

Решение

ХОРОШО. Документация MSDN (для пользователей Delphi) вводит в заблуждение. Это поле STATSTG определяется в модуле ActiveX по имени dwType, Когда я его использую, он, конечно, компилируется.

Другие вопросы по тегам