如何在Delphi中检查枚举的IStorage元素的类型?

时间:2017-06-14 11:17:42

标签: delphi istorage

我需要在Delphi 7中使用IStorageIStream接口。我需要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 个答案:

答案 0 :(得分:1)

行。 MSDN文档(对于Delphi用户)具有误导性。 STATSTG的此字段在ActiveX单元中按名称dwType定义。当我使用它时,它当然会编译。