29.08.2011, 16:28 | #1 |
Участник
|
Ребят, подскажите, пожалуйста, кто сталкивался подобной ситуацией.
Необходимо выполнить вывод всех файлов (их название), которые указаны в соответствующей директории, используя Automation. Собственно я создал указанные ниже две переменные: FileSystem Automation 'Microsoft Scripting Runtime'.FileSystemObject Folder Automation 'Microsoft Scripting Runtime'.Folder Код: CREATE(FileSystem); IF NOT FileSystem.FolderExists("Path") THEN ERROR(‘Нет такой директории’); Folder := FileSystem.GetFolder(“Path”); |
|
29.08.2011, 18:15 | #2 |
Участник
|
Использовать автомейшен обязательно? Вроде есть виртуальная таблица File, которую легко можно использовать в навижене как и обычную таблицу..
|
|
29.08.2011, 21:22 | #3 |
Участник
|
Да, обязательно (по крайней мере мне так кажется). Просто папка с файлами лежит не на локальной машине, а в расшаренной папке в сети. Насколько я знаю, виртуальная таблица File тут не поможет (по крайней мере пробовал - не помогло, с локальными файлами замечательно работает).
|
|
30.08.2011, 10:58 | #4 |
Участник
|
Пример браузера в Navе.
В ОпенФорм укажите свой путь к сетевой папке, используя имя компьютера или его IP. |
|
30.08.2011, 11:15 | #5 |
Участник
|
Цитата:
Спасибо заранее. |
|
30.08.2011, 11:21 | #6 |
Участник
|
kudrenko
а какой номер Вас устроит? |
|
30.08.2011, 11:24 | #7 |
Участник
|
|
|
30.08.2011, 11:28 | #8 |
Участник
|
Все поправил.
|
|
30.08.2011, 12:01 | #9 |
Участник
|
|
|
30.08.2011, 12:04 | #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, но оно локализовано (на русской винде для папок выдает "Папка с файлами", что чревато проблемами. |
|
30.08.2011, 14:27 | #11 |
Участник
|
Alterant,спасибо большое, что нашли время и поделились своими советам по вопросу - очень за это признателен! Даже и не предполагал, что это так "извращенно" делается... (особенно по первому варианту ))) Теперь хоть буду иметь представление как это делается с помощью Automation. Спасибо.
|
|