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
意味着它们是输出;您应该为它们分配值。另一方面,这两个const
参数 (HeaderPassword
和) 不能由您更改;FileName
它们是您在决定如何设置允许更改的两个参数时使用的值。将Sender
是RARComp
或任何您的组件实例被调用;如果需要使用类似TRARComponent(Sender)
or的语法访问其他信息,它可以进行类型转换(Sender as TRARComponent)
。
同样,我不知道这个组件的正确类名是什么,或者你的实例将被命名为什么。如果组件的类名TRARComponent
在 IDE 的组件面板上,并且您将它放在表单上,它将被声明为RARComponent1: TRARComponent;
,并且您将在适当的地方使用名称RARComponent1
和名称TRARComponent(Sender)
。