AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.04.2005, 14:41   #1  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Достаточно интересный на мой взгляд вопрос: как из кода Нави создать на диске новую директорию с определённым именем? Ну вот например, можно скопировать (удалить, переименовать) файл с помощью команды COPY (ERASE, RENAME), а есть ли команда на создание директории (папки)?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
Старый 20.04.2005, 15:02   #2  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Есть. называется SHELL
Типа SHELL('cmd /C', 'MKDIR', DIRNAME); (DIRNAME - имя директории)
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 20.04.2005, 17:55   #3  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
OK. А как проверить: а вдруг директория, которую я собрался создать,- уже существует?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
Старый 21.04.2005, 09:20   #4  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Ну дык.
Заводите переменную f типа file.
DIRNAME типа текст - имя директориии (к примеру, 'C:\TESTDIR\')
Пишете что-нибудь вроде
<div class='XPPtop'>X++</div><div class='XPP'>
[color=:blue]IF[/color] f.CREATE(DIRNAME + [color=:red]'test'[/color]) THEN
 [color=:green]//значит такая директория уже есть. рекомендуется
[/color]  [color=:green]//сделать   f.CLOSE и стереть его нафиг
[/color][color=:blue]ELSE[/color]
 [color=:green]//Значит, такой директории нет, создаем ее[/color]</div>
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 22.04.2005, 18:06   #5  
Shoorik is offline
Shoorik
Участник
 
19 / 10 (1) +
Регистрация: 03.03.2005
Есть на самом деле более красивый способ - при помощи функций библиотеки shell32.dll.
Объект Folder в этой библиотеке позволяет работать с каталогами - получать информацию, копировать, перемещать объекты между каталогами (подробное описание есть в MSDN - http://msdn.microsoft.com).

В примере используются переменные:
ShellApplication: Automation 'Microsoft Shell Controls And Automation'.Shell
ShellFolder: Automation 'Microsoft Shell Controls And Automation'.Folder

<div class='CALtop'>C/AL</div><div class='CAL'>
CREATE(ShellApplication);
ShellFolder:=ShellApplication.NameSpace('C:\New Folder');
//Если заданный каталог не существует, то объект ShellFolder не инициализирован
//В таком случае создаём каталог
IF ISCLEAR(ShellFolder) THEN BEGIN
 ShellFolder:=ShellApplication.NameSpace('C:\');
 ShellFolder.NewFolder('New Folder');
END;</div>
Старый 22.04.2005, 18:12   #6  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Можно проще:

MSR : Automation 'Microsoft Scripting Runtime'.FileSystemObject";

Код:
CREATE(MSR);
MSR.CreateFolder('C:\123');
Старый 24.12.2008, 06:34   #7  
el_patron is offline
el_patron
Участник
 
12 / 10 (1) +
Регистрация: 18.11.2008
ну и че не работает твой shell. чё ты гонишь
Старый 24.12.2008, 10:09   #8  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Shell в 5.1 работает несколько по другому нежели в 3.7 и 4.0.
el_patron - ты базар фильтруй а то мигом бан заработаешь.
Старый 24.12.2008, 13:24   #9  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от rmv Посмотреть сообщение
Shell в 5.1 работает несколько по другому нежели в 3.7 и 4.0.
el_patron - ты базар фильтруй а то мигом бан заработаешь.
rmv, очень интересно, не могли бы описать чуть подробней. В справке вроде изменений не заметил ...
Старый 24.12.2008, 13:52   #10  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Цитата:
Сообщение от Alterant Посмотреть сообщение
rmv, очень интересно, не могли бы описать чуть подробней. В справке вроде изменений не заметил ...
Похоже изменения появились в одном из сервис-паков 4.0.
Вкратце здесь:
http://www.mibuso.com/forum/viewtopic.php?t=12507
Ключевая фраза
"It seems that 4.0 doesn't search the PATH anymore, so you have to give the complete path and the environment variable in my previous post has the complete path"
Старый 24.12.2008, 16:35   #11  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от rmv Посмотреть сообщение
Похоже изменения появились в одном из сервис-паков 4.0.
Вкратце здесь:
http://www.mibuso.com/forum/viewtopic.php?t=12507
Ключевая фраза
"It seems that 4.0 doesn't search the PATH anymore, so you have to give the complete path and the environment variable in my previous post has the complete path"
Ясно, спасибо. Я всегда стараюсь передавать полный путь и по этому не заметил.
Старый 02.03.2012, 10:30   #12  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
У меня есть репорт, создающий на выходе несколько файлов. Как на реквест форме присвоить переменной путь к директории, чтобы можно было по OnAssistEdit её (директорию, а не файлы по отдельности) найти и выбрать?
Старый 02.03.2012, 11:07   #13  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Код:
CLEAR(Shell32);
CREATE(Shell32);
Folder := Shell32.BrowseForFolder(0,'',0);
IF ISCLEAR(Folder) THEN
  EXIT;
FolderItem := Folder.Self;
"Path To CreatingFolder" := FolderItem.Path;



Name	DataType	Subtype	Length
Shell32	Automation	'Microsoft Shell Controls And Automation'.Shell	
Folder	Automation	'Microsoft Shell Controls And Automation'.Folder2	
FolderItem	Automation	'Microsoft Shell Controls And Automation'.FolderItem
В базовом коде кажется тоже что-то есть.
Старый 02.03.2012, 11:17   #14  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
о! как раз то что надо! спасибо.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:33.