Delphi RAR组件请求存档密码

时间:2011-06-01 22:35:37

标签: delphi passwords components archive rar

我想要这个RAR组件:http://www.philippewechsler.ch/RARComponent.php
作者:Philippe Wechsler。

但是我不明白如何申请密码不是存档中的文件而是存档?

它写在文档中,我不明白如何使用:

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

如果需要密码才能继续,则会发生此事件。

HeaderPassword:如果这是真的,则需要密码才能打开存档。 否则,需要密码来处理文件。

FileName:需要密码的文件的文件名(存档名称 或归档中文件的文件名)

NewPassword:所需的密码

Cancel:如果您不知道正确的密码,请将此设置为true

如何使用此代码?

1 个答案:

答案 0 :(得分:1)

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

我不确定这里的问题是什么...这是一个事件处理程序,你可以像任何其他事件处理程序一样分配它:通过双击Object中的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的事实意味着它们输出;您应该为它们分配值。另一方面,两个const参数(HeaderPasswordFileName)不能由您更改;它们是您在决定如何设置允许更改的两个参数时使用的值。 Sender将是RARComp或您的组件实例被调用的任何内容;如果需要使用TRARComponent(Sender)(Sender as TRARComponent)等语法访问其他信息,则可以进行类型转换。

同样,我不知道该组件的正确类名是什么,或者您的实例将被命名为什么。如果组件的类名是TRARComponent在IDE的组件面板上,并且您将其放在表单上,​​它将被声明为RARComponent1: TRARComponent;,您将使用名称RARComponent1和{适当时{1}}。