通过delphi检索扩展文件属性

时间:2014-04-24 14:59:46

标签: vba delphi word-2010

在Windows资源管理器中右键单击文件并从菜单中选择“属性”时,会出现一个对话框,显示该文件的基本属性。

我试图获取文件夹中word文件的这些属性(关键字,注释,标题...)。

我修改了一个我在某处找到的代码,它在vba(MSWord office宏)中运行良好:

Private Sub CommandButton1_Click()

Dim arrHeaders(35)

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\Scripts")

For i = 0 To 34
  arrHeaders(i) = objFolder.GetDetailsOf(objFolder.Items, i)
Next

For Each FileName In objFolder.Items
  For i = 0 To 34
    MsgBox i & vbTab & arrHeaders(i) & ": " & objFolder.GetDetailsOf(FileName, i)
  Next
Next

End Sub

所以我试图让它在delphi中的对象pascal中运行。我仍然缺少一些语法。

我能够转换一半的语法:

procedure TFormAFDetails.Button1Click(Sender: TObject);
var
  ObjShell, ObjFolder : Variant;
  FileProp : array of string;
  FName : String;
  I, J : Integer;
begin
    SetLength(FileProp, 35);
    ObjShell := CreateOleObject('Shell.Application');
    ObjFolder := ObjShell.NameSpace('C:\Scripts');

    for I := 0 to 34 do
      FileProp[I] := ObjFolder.GetDetailsOf(ObjFolder.Items,I);

    for FName in ObjFolder.Items do
    begin
      for J := 0 to 34 do
        ShowMessage(FileProp[J]+' : '+ObjFolder.GetDetailsOf(FName,J));
    end;
end;

部分" for-in-do"不会像它说的那样工作

//for -in statement can't operate on collection type 'variant' 

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

你问的问题的答案是:

for I := 0 to ObjFolder.Items.Count-1 do
begin
  FName := ObjFolder.Items.Item(I);
  ....
end;    

代码看起来有点奇怪,尤其是使用魔法值35。