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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.12.2007, 16:31   #1  
Smith is offline
Smith
Участник
 
76 / 10 (1) +
Регистрация: 02.09.2004
Архивирование файлов
Добрый вечер!
Есть задача заархивировать из аксапты определенный файл в заданный каталог, а затем исходный файл удалить. В связи с этим ряд вопросов:

1. Сам процесс архива? winAPI::shellExecute правильно? Это наверное самый легкий момент, однако если у кого есть готовая строка с парметрами для винрара, то лишним не будет
2. Не очень хочется указывать в вышеприведенной функции абсолютное имя запускаемой программы (архиватора). Его могут на разных машинах установить в разные места. Информация о программах в винде есть. Можно как-то извернуться и прописать то место, где заданная программа находится согласно реестру винды?
3. Если файл большой, то процесс архивирования может занять определенное время, а по программе после архивирования идет удаление. Аксапта будет ждать пока файл не запакуется или начнет сразу его убивать, вызывая при этом ошибку? Если "да", то как этого избежать?
Старый 07.12.2007, 17:02   #2  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от Smith Посмотреть сообщение
Добрый вечер!
Есть задача заархивировать из аксапты определенный файл в заданный каталог, а затем исходный файл удалить. В связи с этим ряд вопросов:

1. Сам процесс архива? winAPI::shellExecute правильно? Это наверное самый легкий момент, однако если у кого есть готовая строка с парметрами для винрара, то лишним не будет
Для винрара все параметры есть в хелпе. Вот например:

Код:
 
Заархивировать все файлы из текущей и вложенных папок в
самораспаковывающийся непрерывный архив, разделённый на тома 
save.part1.exe, save.part2.rar, save.part3.rar, … размером по 362000 байт, и 
добавить к каждому тому информацию для восстановления:
 
WinRAR  a  –r  –v362  –s  –sfx  –rr  save
Цитата:
2. Не очень хочется указывать в вышеприведенной функции абсолютное имя запускаемой программы (архиватора). Его могут на разных машинах установить в разные места. Информация о программах в винде есть. Можно как-то извернуться и прописать то место, где заданная программа находится согласно реестру винды?
Путь до винрара есть в реестре. Например:
Код:
 
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WinRAR\shell\open\command
Цитата:
3. Если файл большой, то процесс архивирования может занять определенное время, а по программе после архивирования идет удаление. Аксапта будет ждать пока файл не запакуется или начнет сразу его убивать, вызывая при этом ошибку? Если "да", то как этого избежать?
Попробуйте заархивировать большой файл и увидете что она там делает.
Вообще есть параметр boolean _waitForCompletion = false в winAPI::shellExecute.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0

Последний раз редактировалось Alex_KD; 07.12.2007 в 17:06.
Старый 07.12.2007, 17:33   #3  
leva is offline
leva
Участник
 
52 / 36 (2) +++
Регистрация: 03.08.2005
А почему бы не воспользоваться dll-кой 7-zip?
Конечно поразбираться с ней придется, зато вышеперечисленных проблем нет, красиво, бесплатно.
Старый 07.12.2007, 17:39   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Smith Посмотреть сообщение
3. Если файл большой, то процесс архивирования может занять определенное время, а по программе после архивирования идет удаление. Аксапта будет ждать пока файл не запакуется или начнет сразу его убивать, вызывая при этом ошибку? Если "да", то как этого избежать?
Можно не добавлять в арзив а перемещать туда. rar m ....
Старый 07.12.2007, 17:51   #5  
Smith is offline
Smith
Участник
 
76 / 10 (1) +
Регистрация: 02.09.2004
Спасибо за ответы, почти все получилось, кроме вопроса с реестром. Не разобрался пока как подставить значение этого ключа
X++:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WinRAR\shell\open\command
в функцию. Смотрю в винАПИ, там есть несколько методов, которые с реестром работают, но малопонятно, что им пихать в параметры =(
Цитата:
Можно не добавлять в арзив а перемещать туда. rar m ....
Ага, причем я сначала сделал rar a -df, а потом нашел rar m, аналогичный по функциональности.
Старый 07.12.2007, 17:55   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А по перекрестным посмотреть
например, WInApi::showMruAllowed
X++:
static client boolean showMruAllowed()
{
    #winAPI
    container reg   = conNull();
    int       value;
    int       handle;

    handle  = WinAPI::regOpenKey(#HKEY_CURRENT_USER, 'Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Comdlg32', #KEY_READ);
    reg     = WinAPI::regGetValue(handle, 'NoFileMru');
    WinAPI::regCloseKey(handle);

    if (reg == conNull())
    {
        // The item is not found, so Most Recently Used menus are allowed
        return true;
    }
    else
    {
        // If the value is true, MRUs are not allowed
        [ value ] = reg;
        return  (value != true);
    }
}
Старый 07.12.2007, 18:57   #7  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от Smith Посмотреть сообщение
Смотрю в винАПИ, там есть несколько методов, которые с реестром работают, но малопонятно, что им пихать в параметры =(
Если малопонятно -
- открываем МСДН и смотрим нужную ф-ю.
- ищем пример в АОТе
- гугл никто не отменял

Неужели сложно
PS туториал или описание гдето было по этим ф-ям касательно использования через Аксу. Вроде в блогах гдето видел.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 10.12.2007, 17:57   #8  
Smith is offline
Smith
Участник
 
76 / 10 (1) +
Регистрация: 02.09.2004
Спасибо еще раз, все сработало!
Alex_KD, вопрос не в сложности, лени или нежелании думать своими мозгами, а в скорости. Конечно, можно потратить на эти вопросы гораздо больше времени и найти все самому, но на форуме информацию можно получить куда быстрее.
Старый 10.12.2007, 23:40   #9  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Помогло - хорошо
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 11.12.2007, 16:16   #10  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от Smith Посмотреть сообщение
Спасибо еще раз, все сработало!
Alex_KD, вопрос не в сложности, лени или нежелании думать своими мозгами, а в скорости. Конечно, можно потратить на эти вопросы гораздо больше времени и найти все самому, но на форуме информацию можно получить куда быстрее.
Зато найденное самостоятельно решение:
1. Сильнее запоминается
2. В качестве знания приобретается не решение, а "путь" нахождения решения, что в дальнейшем позволит быстрее находить подобные решения (к вопросу о скорости)
3. Накапливаются пути нахождения решения, применение которых в различных комбинациях дают основы к развитию системного мышления и нахождения нестандартных решений.
4.....
ничего личного просто "...к вопросу о..." том, что частенько многие на форуме, которые зная решение, подсказывают пути их решения тем самым приносят вопрошающему гораздо больше пользы, чем просто ответ, хотя многие вопрошающие этого не понимают.
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/

Последний раз редактировалось blokva; 11.12.2007 в 16:18.
За это сообщение автора поблагодарили: mazzy (5).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Печать самих файлов PDF Владимир Максимов DAX: База знаний и проекты 9 17.08.2017 10:34
сортировка файлов ZVV DAX: Программирование 12 20.10.2008 19:56
Как получить список файлов заданной папки demetra DAX: База знаний и проекты 3 01.11.2006 14:51
И.... еще раз про архивирование... AKIS-Falcon DAX: Функционал 5 19.02.2005 21:24
WinApi. Удаление файлов глючит. NJD DAX: Программирование 10 05.12.2003 13:31

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

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

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