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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.12.2005, 12:54   #1  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Как разархивировать zip архив?
Кто подскажет как в Аксе разархивировать zip архив?
Старый 02.12.2005, 13:07   #2  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
см. WinAPI.shellExecute()
__________________
Андрей.
Старый 02.12.2005, 13:15   #3  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
ну это запустить внешний архиватор... я понял...
а какой архиватор можно использовать?
Старый 02.12.2005, 13:18   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
http://www.7-zip.org/
Старый 02.12.2005, 13:19   #5  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
На мой взгляд, лучше всего консольный 7zip ( www.7zip.org ) Там же и dll-версия есть.
Старый 02.12.2005, 13:33   #6  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Спасибо. Пошел качать.
Старый 02.12.2005, 13:34   #7  
DenNik is offline
DenNik
Участник
 
62 / 9 (1) +
Регистрация: 24.05.2005
ZIP архивы читает и RAR прекрасно и, на сколько я знаю, заморочек с ним меньше:
WinAPI::shellExecute("c:\\Program Files\\WinRAR\\winrar.exe", 'winrar e -y c:\123.zip C:\123');
Старый 02.12.2005, 13:36   #8  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
ооо... вот это уже интереснее
сразу код есть
сэнкс
Старый 02.12.2005, 13:54   #9  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
WinAPI::shellExecute("c:\\Program Files\\7-zip\\7z.exe", '7z e -y c:\123.zip C:\123');

Старый 02.12.2005, 14:06   #10  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев

еще!
Старый 02.12.2005, 14:08   #11  
DenNik is offline
DenNik
Участник
 
62 / 9 (1) +
Регистрация: 24.05.2005
2 Alex_K спасибо будем знать
Старый 02.12.2005, 14:21   #12  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Интересно, а как в случае с shellExecute вы собираетесь узнать результат выполнения?
__________________
Axapta v.3.0 sp5 kr2
Старый 02.12.2005, 14:46   #13  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от AndyD
Интересно, а как в случае с shellExecute вы собираетесь узнать результат выполнения?
http://www.axforum.info/forums/showt...3398#post33398

Mazzy, занеси пжл в ФАК. Вопрос возникает с завидной периодичностью
Старый 02.12.2005, 14:48   #14  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Цитата:
Сообщение от db
http://www.axforum.info/forums/showt...3398#post33398

Mazzy, занеси пжл в ФАК. Вопрос возникает с завидной периодичностью
Да. Действительно, спрашивал уже. Только этот пост не связан с тем. Не помню уже зачем спрашивал. Наверное долго не отвечали и я забыл про него. В любом случае, спасибо.

Последний раз редактировалось slava09; 02.12.2005 в 14:51.
Старый 02.12.2005, 14:22   #15  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Какой результат?
Старый 02.12.2005, 14:34   #16  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Распаковано/не распаковано.
__________________
Axapta v.3.0 sp5 kr2
Старый 02.12.2005, 14:46   #17  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Вопрос конечно хороший. Насколько я понял надо DLL пользоваться?
Старый 02.12.2005, 14:58   #18  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
2 db

И каким образом это дает ответ на мой вопрос?
__________________
Axapta v.3.0 sp5 kr2
Старый 02.12.2005, 16:05   #19  
kvan is offline
kvan
Moderator
Аватар для kvan
Дети Юза
 
775 / 49 (3) +
Регистрация: 07.08.2002
Адрес: Donetsk
PHP код:
static void TestBadArc_Job(Args _args)
{;
 
    
WinAPI::shellExecuteWait("C:\\Program Files\\WinRAR\\winrar.exe e -y C:\\1.zip C:\\1\\", -1);
    
WinAPI::shellExecuteWait("C:\\Program Files\\WinRAR\\winrar.exe e -y C:\\2.zip C:\\2\\", -1);
 
return;

1.zip - нормальный архив
2.zip - битый архив (нераспаковывается)

Все отрабатывает. Нет файла - значит архив не распаковался.

P.S. Спасибо db
__________________
С уважением, kvan.
Старый 02.12.2005, 19:38   #20  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от AndyD
2 db

И каким образом это дает ответ на мой вопрос?
Ой Ткнул на ссылку, не проверив содержимое. Думал что там версия, которая уже возвращает код завершения процесса. Исправляюсь тут

PHP код:
static int shellExecute(str commandLineint _waitTime = -1int _creationFlags 0int cmdShow 4)
{
    
#WinAPI
    
Dll             kernel32                    = new Dll("kernel32.dll");
    
DllFunction     createProcess             = new DllFunction(kernel32"CreateProcessA");
    
DllFunction     waitForSingleObject         = new DllFunction(kernel32"WaitForSingleObject");
    
DllFunction     terminateProcess            = new DllFunction(kernel32"TerminateProcess");
    
DllFunction     openProcess                 = new DllFunction(kernel32"OpenProcess");
    
DllFunction     getExitCodeProcess         = new DllFunction(kernel32"GetExitCodeProcess");
    
Binary         strartupInformation = new binary(68);
    
Binary         processInformation = new binary(16);
    
Binary         exitCode            = new binary(4);
    
int             hProcess;
    
int             hThread;
    
int             hProcessTerminate;
    
int             dwProcessId;
    
void cleanup()
    {;
        
WinApi::closeHandle(hProcessTerminate);
        
WinApi::closeHandle(hProcess);
        
WinApi::closeHandle(hThread);
    }
    
createProcess.returns(ExtTypes:: WORD);
    
createProcess.arg(ExtTypes:: WORDExtTypes::STRING,
                     
ExtTypes:: WORDExtTypes:: WORD,
                     
ExtTypes:: WORDExtTypes:: WORD,
                     
ExtTypes:: WORDExtTypes:: WORD,
                     
ExtTypes::POINTERExtTypes::POINTER);
    
waitForSingleObject.returns(ExtTypes:: WORD);
    
waitForSingleObject.arg(ExtTypes::WORDExtTypes:: WORD);
    
terminateProcess.returns(ExtTypes:: Word);
    
terminateProcess.arg(ExtTypes:: WordExtTypes:: Word);
    
openProcess.returns(ExtTypes:: WORD);
    
openProcess.arg(ExtTypes:: WORDExtTypes:: WORDExtTypes:: WORD);
    
getExitCodeProcess.returns(ExtTypes:: WORD);
    
getExitCodeProcess.arg(ExtTypes:: WordExtTypes::Pointer);
    
strartupInformation.dWord(44cmdShow);
    try
    {
        if (! 
createProcess.call(0commandLine000_creationFlags00strartupInformationprocessInformation))
        {
            throw 
error(strfmt("Ошибка при запуске приложения \"%1\""commandLine));
        }
        
hProcess    processInformation.dWord(0);
        
hThread     processInformation.dWord(4);
        
dwProcessId processInformation.dWord(8);
        if (
waitForSingleObject.call(hProcess_waitTime) == #STATUS_TIMEOUT)
        
{
            
setprefix("Принудительное завершение приложения");
            
setprefix(commandLine);
            
hProcessTerminate openProcess.call(#PROCESS_ALL_ACCESS, 0, dwProcessId);
            
if (! hProcessTerminate)
            {
                throw 
error("Отказано в доступе");
            }
            if (! 
terminateProcess.call(hProcessTerminate, -1))
            {
                throw 
error("Ошибка при завершении приложения");
            }
            throw 
error("Приложение закрыто, так как не завершилось за отведенное ему время");
        }
        else
        {
            if (! 
getExitCodeProcess.call(hProcessexitCode))
            {
                throw 
error("Ошибка при получении кода завершения приложения");
            }
        }
    }
    catch (
Exception::Error)
    {
        
cleanup();
        throw 
Exception::Error;
    }
    
cleanup();
    return 
exitCode.dWord(0);

Про коды возрата уже ответил kvan, он же привел другой вариант запуска приложения. Выбирайте любой
За это сообщение автора поблагодарили: SHiSHok (1).
Теги
winapi, zip, архивирование, законченный пример, полезное, программирование, разархивировать

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Программное сохранение автоотчета в архив печати. Dima_Dima DAX: Программирование 3 29.07.2009 17:36
axaptapedia: Autozip for Dax 4.0 Blog bot DAX Blogs 0 30.04.2008 16:05
Как скачать и разархивировать файл Arahnid DAX: Программирование 10 16.11.2007 16:22
Архив technet.damgaard.com ? Torin DAX: Прочие вопросы 9 10.06.2005 20:30
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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