Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2016, 21:08   #1
ilya4743
 
Регистрация: 30.12.2016
Сообщений: 8
По умолчанию Проблема с распаковкой архива .bz2 при помощи 7zip

Нужно программно распаковать архив BZ2. Для этого использую архиватор 7-zip (sevenzip.pas и 7z.dll) со следующим кодом:
Цитата:
...
uses SevenZip;
...
begin
with CreateInArchive(CLSID_CFormatBZ2) do
begin
OpenFile('B:\TF2 md\Archiv1\example.csv.bz2');
ExtractTo('B:\TF2 md\Archiv1\');
end;
end;
Проблема: на строчке ExtractTo('B:\TF2 md\Archiv1\') выдает ошибку "Cannot create file "'B:\TF2 md\Archiv1\'". Системе не удаётся найти указанный путь" Но ошибка не в том, что нет этой папки, она есть (см.рис) и соответствующих прав хватает. А затем сразу после этой ошибки вылезает следующая (см. рис.). Причем, если ради эксперимента я беру сторонний архив с расширением .RAR или .ZIP или .7Z(под каждый тип меняя CLSID_CFormatZIP, CLSID_CFormat7z и CLSID_CFormatRAR), то все работает нормально. Но архив не мой, поэтому изменить тип архива не в моих силах, надо распаковывать bz2.

Я пытался найти на просторах интернета решение своей проблемы, но мои поиски особо ни к чему не привели . Я лишь понял, что при bz2 распаковке в имя файла почему-то записывается пустая строка, но где и как это исправить я без понятия. Где-то я читал, что следует указать имя файла явно, т. к. архив bz2 не хранит в себе имени, но что это значит?

Подскажите пожалуйста как решить эту проблему.
[IMG]



[/IMG]
ilya4743 вне форума Ответить с цитированием
Старый 30.12.2016, 22:02   #2
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Напиши так:
Код:
ExtractTo('B:\TF2 md\Archiv1\example.csv');
Artsiom вне форума Ответить с цитированием
Старый 30.12.2016, 22:16   #3
ilya4743
 
Регистрация: 30.12.2016
Сообщений: 8
По умолчанию

К сожалению это не помогает
Результатом остаются все те же ошибки
ilya4743 вне форума Ответить с цитированием
Старый 30.12.2016, 23:00   #4
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Хз, я бы по своему нубству предложил бы забить на sevenzip.pas...

Код:
procedure Execute(Path, Parametrs : string);
var
  SI: TStartupInfo;
  PI: TProcessInformation;
  Exe: String;
begin
  Form1.Enabled := False;
  FillChar(SI, SizeOf(SI), 0);
  SI.cb := SizeOf(SI);

//Exe := '"C:\Program Files (x86)\7-Zip\7z.exe" x players_2016_10_22_13.csv.gz';
//Exe := '"C:\Program Files (x86)\WinRAR\WinRAR.exe" x players_2016_10_22_13.csv.gz';
  Exe := Path + ' x ' + Parametrs;
  UniqueString(Exe);

  if CreateProcess(nil, PChar(Exe), 0, 0, False, 0, 0, 0, SI, PI) then
    begin
      //ждём завершения процесса
      WaitForSingleObject(pi.hProcess, INFINITE);
      CloseHandle(pi.hProcess);
      CloseHandle(pi.hThread);
    end
  else
    ShowMessage('NO!');
  Form1.Enabled := True;
end;
Artsiom вне форума Ответить с цитированием
Старый 30.12.2016, 23:02   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Винрар-то зачем если есть бесплатный 7-zip? И даже в виде 1 файла (7za.exe) для таскания с собой.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 30.12.2016, 23:07   #6
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Винрар красивый
Классно смотрится в контекстном меню ^_^
Artsiom вне форума Ответить с цитированием
Старый 31.12.2016, 07:04   #7
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

ilya4743, архив скинь, который хочешь распаковать.
FaTaL вне форума Ответить с цитированием
Старый 31.12.2016, 12:56   #8
ilya4743
 
Регистрация: 30.12.2016
Сообщений: 8
По умолчанию

Ну например этот. Особого значения я думаю это не имеет.
http://rgho.st/8C5zrpdQk
ilya4743 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Последовательное заполнение ячеек при помощи диалоговых окон, при определенном значении в определенной ячейке Inna2708 Microsoft Office Excel 5 10.11.2014 01:15
WP - распаковка 6гб .bz2 на localhost fs444 WordPress и другие CMS 1 23.02.2014 20:00
Помогите с 7zip Sfx архивом Stiffler Помощь студентам 1 04.12.2009 17:24
Проблема при открытии базы при помощи ADO SlavaSH БД в Delphi 21 30.06.2009 16:51
Нужна помощ с распаковкой экзешника... Drimius Безопасность, Шифрование 13 26.10.2007 00:44