Страница 2 из 2

Re: UNrar

Добавлено: 19 фев 2015, 13:45
Sergey Ivanov
dadreamer писал(а):
2015-02-19_14-20-53.jpg
И не нужно никаких батников городить.
Поместил UnRAR.exe в папку system32
Зачем вы это делаете? :shok:
На клиентских ПК тоже так собираетесь поступить?
Спасибо, работает !
Нет, я просто разные варианты пробовал )

Vitekkz88 писал(а):
Поменяйте путь на Program Files (x86)
Так то я знаю где у меня лежит UnRAR.exe:)
Пробела, вроде, не хватает перед (х86) "Program Files (x86)"

Re: UNrar

Добавлено: 19 фев 2015, 13:49
Super Star
dadreamer писал(а):Super Star, Vitekkz88, а почему у меня тогда работает на Windows 7 x64? :crazy:
У меня WinRAR 64-разрядный стоит. У вас, видимо, нет.
не работает

Re: UNrar

Добавлено: 19 фев 2015, 13:54
Vitekkz88
Пробела, вроде, не хватает перед (х86) "Program Files (x86)"
\
Ага, поставил пробел.
Консоль выскакивает и скрывается. Но результата нет почему-то...

Re: UNrar

Добавлено: 19 фев 2015, 14:05
Vitekkz88
Ну и ладно! Не особо то и хотелось :crazy: Главное - автору помогло)

Re: UNrar

Добавлено: 19 фев 2015, 15:06
dadreamer
Vitekkz88 писал(а):Ага, поставил пробел.
Консоль выскакивает и скрывается. Но результата нет почему-то...
Попробуйте вот в этом только что состряпанном :vi: :

Re: UNrar

Добавлено: 19 фев 2015, 15:14
Vitekkz88
Попробуйте вот в этом только что состряпанном
:shok:
UNRAR 3.30 freeware Copyright (c) 1993-2004 Eugene Roshal
C:\Users\Lemz-T\Desktop\q\qw.rar is not RAR archive
No files to extract
:shok:

Re: UNrar

Добавлено: 19 фев 2015, 15:15
dadreamer
Vitekkz88 писал(а):C:\Users\Lemz-T\Desktop\q\qw.rar is not RAR archive
Старая версия архиватора? Или самого UnRAR'а? А может некорректно поставился?.. Я могу только гадать )

Re: UNrar

Добавлено: 19 фев 2015, 15:19
Vitekkz88
Старая версия архиватора? Или самого UnRAR'а? А может некорректно поставился?.. Я могу только гадать )Я могу только гадать )
Вот уж извините, доколь проблем не знали)
Думаю архиватор по-свежее всё исправит. Может еще кто проверит?

Re: UNrar

Добавлено: 19 фев 2015, 15:25
dadreamer
У меня сейчас версия 5.21 бета 1. UnRAR в консоли ту же версию выдаёт.
2015-02-19_17-21-34.jpg
Буду дома, там еще проверю, на более старой версии.

Re: UNrar

Добавлено: 19 фев 2015, 15:46
Super Star
5.21 заработало, из-за того что каждый параметр в кавычках передавался

Re: UNrar

Добавлено: 19 фев 2015, 18:01
dadreamer
 

Re: UNrar

Добавлено: 20 фев 2015, 22:03
Sergey Ivanov
dadreamer писал(а):А вообще по хорошему путь к WinRAR'у нужно получать через реестр (HKLM\Software\WinRAR\exe64)
Сделал получение пути через реестр, но он отличается от указанного вами. Почему ?
Снимок.JPG
unrar.vi
(20.75 КБ) 230 скачиваний

Re: UNrar

Добавлено: 20 фев 2015, 22:22
dadreamer
Sergey Ivanov писал(а):Почему ?
Этот путь не берите, это для наличия пункта "WinRAR -> Добавить в архив / Извлечь в ..." в контекстном меню файлов и папок, когда на них жмёшь ПКМ. Используйте тот путь, что я привёл выше. Или просто проверяйте в папках Program Files и Program Files (x86) наличие файла unrar.exe. Правда, этот вариант может не сработать, если юзер поставил WinRAR в какую-то другую папку.

Так-то, конечно, можно было бы взять unrar.dll и распаковать что угодно, распространяя её вместе с вашей программой. Тем более что либа свободная, да ещё с нормальной документацией и кучей примеров. Но право что-то так возиться лень, извините. :crazy: Может, как-нибудь позже посмотрю.

Re: UNrar

Добавлено: 21 фев 2015, 21:40
dadreamer
На основе примеров из UnRARDLL.exe сделал несколько :vi: и тестовую программку, выполняющую распаковку архива с помощью unrar.dll. Реализован только самый базовый функционал, тестирование и листинг архива делать не стал. Пример использования инструментов:
Snippet.png
При использовании этих :vi: нужно указать путь к Callback-библиотеке, она лежит рядом с :vi: , при работе в RTE должна находиться в папке data (при желании можно поменять в RAROpenArchiveEx.vi). Если потребуется структура RAROpenArchiveDataEx, её можно вытащить из того же :vi: . Прерывание (останов) распаковки тоже не стал делать, это на будущее, если кому-то понадобится. Это же относится и к прогрессу распаковки.
Для RARProcessFile.vi можно не задавать входы Dest Folder (папка, куда производится распаковка) и Dest FileName (full) (полный путь для извлекаемого файла: если указан, то файл извлекается по этому пути и с этим именем вместо имеющегося). В этом случае архив распаковывается туда же, где он находится. Подробное описание всех функций и структур см. в мануале.

VI:
2011_unrar.rar
(204.52 КБ) 242 скачивания
Исходник Callback (D7):

Код: Выделить всё

library Callback;

uses
  SysUtils, Classes, Windows;

{$R *.res}

function CallbackProc(msg: UINT; UserData, P1, P2: Integer): Integer; stdcall;
var C: PChar;
begin
  Result := 0;
  case msg of
    0: //UCM_CHANGEVOLUME
      if (P2 = 0) then begin //RAR_VOL_ASK
      {
        Write(CR, 'Insert disk with ', PChar(P1), ' and press ''Enter'' or enter ''Q'' to exit ');
        Readln(Ch);
        if (UpCase (Ch) = 'Q') then
          Result := -1;
      }
      Result := -1; //terminate operation
      end;
    2: //UCM_NEEDPASSWORD
      begin
        //Write(CR, 'Please enter the password for this archive: ');
        //Readln(S);
        C := PChar(UserData); //password is placed into UserData
        Move(Pointer(C)^, Pointer(P1)^, StrLen(C) + 1);
          //+1 to copy the zero
      end;
    1: //UCM_PROCESSDATA
      begin
      {
      if (UserData <> 0) and (PINT (UserData)^ = PRINT) then begin
        Flush (Output);
        // Windows.WriteFile fails on big data
        for I := 0 to P2 - 1 do
          Write(PChar(P1 + I)^);
        Flush (Output);
      end;
     }
    end;
  end;
end;

exports
CallbackProc name 'CallbackProc';

begin
end.