Как я могу проверить тип перечисляемого элемента 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
, Когда я его использую, он, конечно, компилируется.