20.04.2005, 14:41 | #1 |
Заноза в заднице
|
Достаточно интересный на мой взгляд вопрос: как из кода Нави создать на диске новую директорию с определённым именем? Ну вот например, можно скопировать (удалить, переименовать) файл с помощью команды COPY (ERASE, RENAME), а есть ли команда на создание директории (папки)?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
20.04.2005, 15:02 | #2 |
NavAx
|
Есть. называется SHELL
Типа SHELL('cmd /C', 'MKDIR', DIRNAME); (DIRNAME - имя директории)
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
20.04.2005, 17:55 | #3 |
Заноза в заднице
|
OK. А как проверить: а вдруг директория, которую я собрался создать,- уже существует?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
21.04.2005, 09:20 | #4 |
NavAx
|
Ну дык.
Заводите переменную 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 |
Участник
|
Есть на самом деле более красивый способ - при помощи функций библиотеки 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 |
Moderator
|
Можно проще:
MSR : Automation 'Microsoft Scripting Runtime'.FileSystemObject"; Код: CREATE(MSR); MSR.CreateFolder('C:\123'); |
|
24.12.2008, 06:34 | #7 |
Участник
|
ну и че не работает твой shell. чё ты гонишь
|
|
24.12.2008, 10:09 | #8 |
Участник
|
Shell в 5.1 работает несколько по другому нежели в 3.7 и 4.0.
el_patron - ты базар фильтруй а то мигом бан заработаешь. |
|
24.12.2008, 13:24 | #9 |
Участник
|
|
|
24.12.2008, 13:52 | #10 |
Участник
|
Цитата:
Вкратце здесь: 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 |
Участник
|
Цитата:
Сообщение от 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 |
Участник
|
У меня есть репорт, создающий на выходе несколько файлов. Как на реквест форме присвоить переменной путь к директории, чтобы можно было по OnAssistEdit её (директорию, а не файлы по отдельности) найти и выбрать?
|
|
02.03.2012, 11:07 | #13 |
Участник
|
Код: 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 |
Участник
|
о! как раз то что надо! спасибо.
|
|