Delphi RAR-компонент запрашивает пароль для архива - PullRequest
2 голосов
/ 02 июня 2011

Я хочу этот компонент RAR: http://www.philippewechsler.ch/RARComponent.php
Автор Филипп Вехслер.

Но я не понимаю, как я могу запросить пароль НЕ для файлов в архиве, а для АРХИВА?

В документации написано, что я не понимаю, как использовать:

OnPasswordRequired(Sender: TObject; const HeaderPassword: Boolean; 
const FileName: WideString;out NewPassword: Ansistring; out Cancel: Boolean);

Это событие происходит, если для продолжения требуется пароль.

HeaderPassword: если это правда, пароль необходим для открытия архива.В противном случае для обработки файла необходим пароль.

FileName: имя файла, для которого требуется пароль (либо имя архива, либо имя файла внутри архива)

NewPassword: требуемый пароль

Cancel: установите значение true, если вы не знаете правильный пароль

Как использовать этот код?

1 Ответ

1 голос
/ 02 июня 2011
OnPasswordRequired(Sender: TObject; const HeaderPassword: Boolean; 
const FileName: WideString;out NewPassword: Ansistring; out Cancel: Boolean);

Я не уверен, что вопрос здесь ... Это обработчик событий, и вы назначаете его так же, как и любой другой обработчик событий: либо дважды щелкнув по событию OnPasswordRequired вИнспектор объектов, или подключив его через код:

implementation

  procedure TForm1.FormCreate(Sender: TObject);
  begin
    RARComp.OnPasswordRequired := RARPasswordRequired;
  end;

  procedure TForm1.RARPasswordRequired(Sender: TObject; 
    const HeaderPassword: Boolean; 
    const FileName: WideString; 
    out NewPassword: Ansistring; out Cancel: Boolean);
  begin
    if HeaderPassword then  // need whole archive password
      NewPassword := YourWholeArchivePassword  // provide whole archive password
    else
      // Need individual file password. If you have a separate password for
      // each file, provide it as each file is provided in "filename" param.
      if FileName = TheFilenameYouHavePasswordFor then
        NewPassword := ThisFilesPassword
      else
        Cancel := True;
  end;

Я понятия не имею, каким будет имя компонента (я использовал RARComp, но я не знаком с этим компонентом);замените его на то, что правильно.Конечно, есть предопределенный тип для события OnPasswordRequired (например, TPasswordRequiredEvent или что-то в этом роде);опять же, я не знаком с компонентом.

Объяснение: параметры out, передаваемые в обработчик событий, похожи на параметры var, за исключением того, что их не нужно инициализировать перед передачейкомпонент.Тот факт, что они out, означает, что они output ;вы должны присвоить им значения.С другой стороны, два параметра const (HeaderPassword и FileName) не могут быть изменены вами;они являются значениями, которые вы используете при принятии решения о том, как установить два параметра, которые вам разрешено изменять.Sender будет RARComp или как называется экземпляр вашего компонента;это может быть typecast, если необходимо получить доступ к другой информации с использованием синтаксиса, например TRARComponent(Sender) или (Sender as TRARComponent).

Опять же, я понятия не имею, что такое правильное имя класса для этого компонента или как будет назван его экземпляр.Если имя класса компонента TRARComponent в палитре компонентов среды IDE, и вы уроните его в форму, оно будет объявлено как RARComponent1: TRARComponent;, и вы будете использовать имена RARComponent1 и TRARComponent(Sender), где это уместно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...