![]() |
#10 |
Участник
|
Если хотите использовать Automation, то 2 варианта.
1. С Microsoft Scripting Runtime простого пути нет. Получить данные можно через функцию-итератор, которых в NAV нет. На mibuso народ путем http://mibuso.com/forum/viewtopic.php?f=5&t=7855 2. Те кто ищет пути полегче могут использовать Microsoft Shell Controls And Automation. Код: CREATE(ShellCtrls); ShellFolder := ShellCtrls.NameSpace('C:\Temp'); ShellItems := ShellFolder.Items; FOR i := 0 TO ShellItems.Count - 1 DO BEGIN IF NOT ShellItems.Item(i).IsFolder OR ShellItems.Item(i).IsBrowsable THEN BEGIN INIT; "Row No." := i; "Cell Value as Text" := ShellItems.Item(i).Path; INSERT; END; END; ShellCtrls - 'Microsoft Shell Controls And Automation'.Shell ShellFolder - 'Microsoft Shell Controls And Automation'.Folder ShellItems - 'Microsoft Shell Controls And Automation'.FolderItems можно еще использовать 'Microsoft Shell Controls And Automation'.FolderItem напрямую, добавив соответсвующее присвоение в цикле. Но можно и неявно, как в примере. Со свойствами FolderItem есть некоторые заморочки. При тестировании выяснилось, что FolderItem = TRUE не только для папок, но и для zip архивов. К счастью, для архивов IsBrowsable = TRUE, в то время как для обычных папок FALSE. Возможны еще какие-то ньюансы. Можно, конечно, использовать свойство Type, но оно локализовано (на русской винде для папок выдает "Папка с файлами", что чревато проблемами. |
|