Нужна помощь в распаковке LZ архивов

Тема в разделе "LANGS.C", создана пользователем ValoV, 23 май 2009.

  1. ValoV

    ValoV New Member

    Публикаций:
    0
    Регистрация:
    23 май 2009
    Сообщения:
    6
    Нашел на форуме след. программу
    Код (Text):
    1. int _tmain(int argc, _TCHAR* argv[])
    2. {
    3.     if (argc > 2)
    4.     {
    5.             OFSTRUCT ofs_in  = {0};
    6.             OFSTRUCT ofs_out = {0};
    7.             INT hSrcFile = 0, hDstFile = 0;
    8.             DWORD ec = 0;
    9.  
    10.             hSrcFile = LZOpenFile(argv[1], &ofs_in, OF_READ);
    11.             ec = GetLastError();
    12.             if (hSrcFile >= 0)
    13.             {
    14.                 hDstFile = LZOpenFile(argv[2], &ofs_out, OF_WRITE);
    15.                 ec = GetLastError();
    16.                 if(hDstFile >= 0)
    17.                 {
    18.                     ec = LZCopy(hDstFile, hSrcFile);
    19.                     switch(ec)
    20.                     {
    21.                         case LZERROR_BADINHANDLE: printf("The handle identifying the source file is not valid. The file cannot be read.\n");
    22.                             break;
    23.                         case LZERROR_BADOUTHANDLE: printf("The handle identifying the destination file is not valid. The file cannot be written.\n");
    24.                             break;
    25.                         case LZERROR_GLOBALLOC: printf("The maximum number of open compressed files has been exceeded or local memory cannot be allocated.\n");
    26.                             break;
    27.                         case LZERROR_GLOBLOCK: printf("The LZ file handle cannot be locked down.\n");
    28.                             break;
    29.                         case LZERROR_READ: printf("The source file format is not valid.\n");
    30.                             break;
    31.                         default:
    32.                             printf("ec = %X\n", ec);
    33.                     }
    34.                     LZClose(hDstFile);
    35.                 }
    36.                 LZClose(hSrcFile);
    37.             }
    38.     }
    39. }
    Объясните, как с помощью него распаковывать архивы, пожалуйста?
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Наверно LZRead-ом.
     
  3. ValoV

    ValoV New Member

    Публикаций:
    0
    Регистрация:
    23 май 2009
    Сообщения:
    6
    Можно ли указать вместо argv[1] путь к архиву
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Ну так набери в командной строке - prog path_compess path_decompress, и вроде всё.
     
  5. ValoV

    ValoV New Member

    Публикаций:
    0
    Регистрация:
    23 май 2009
    Сообщения:
    6
    При выполнении появляется только press any key to continue
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Там есть ошибки:
    Вместо - hDstFile = LZOpenFile(argv[2], &ofs_out, OF_WRITE);
    Надо - hDstFile = LZOpenFile(argv[2], &ofs_out, OF_WRITE | OF_CREATE);

    Вместо - ec = LZCopy(hDstFile, hSrcFile);
    Надо - ec = LZCopy(hSrcFile, hDstFile);
     
  7. ValoV

    ValoV New Member

    Публикаций:
    0
    Регистрация:
    23 май 2009
    Сообщения:
    6
    ошибки исправил, но все равно ничего не происходит
    пишет только press any key to continue
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Я уже писал, что нужно передать имена файлов в командную строку. Например твоя собранная прога - proga.exe. Сжатый файл - 1.txt. Набирай в консоли - proga.exe 1.txt 2.txt
     
  9. ValoV

    ValoV New Member

    Публикаций:
    0
    Регистрация:
    23 май 2009
    Сообщения:
    6
    так и сделал, но архив не распаковывается
    архив создавал с помощью compress.exe из unixtools
    а у вас работает?
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    У меня работает. Брал отсюда - http://gnuwin32.sourceforge.net/packages/mscompress.htm
     
  11. ValoV

    ValoV New Member

    Публикаций:
    0
    Регистрация:
    23 май 2009
    Сообщения:
    6
    стало все работать, но вот только содержимое файлов txt отображаются иероглифи