2

この RAR コンポーネントが欲しい: http://www.philippewechsler.ch/RARComponent.php
Philippe Wechsler 著。

しかし、アーカイブ内のファイルではなく ARCHIVE のパスワードを要求する方法がわかりません。

使い方が分からないとドキュメントに書いてあります:

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

このイベントは、続行するためにパスワードが必要な場合に発生します。

HeaderPassword: これが true の場合、アーカイブを開くにはパスワードが必要です。それ以外の場合は、ファイルを処理するためにパスワードが必要です。

FileName: パスワードが必要なファイルのファイル名 (アーカイブ名またはアーカイブ内のファイルのファイル名)

NewPassword: 必要なパスワード

Cancel: 正しいパスワードがわからない場合は、これを true に設定します

このコードを使用するにはどうすればよいですか?

4

1 に答える 1

1
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イベントには事前定義されたタイプ (likeTPasswordRequiredEventまたは something)が必ずあります。繰り返しますが、私はコンポーネントに精通していません。

説明:outイベント ハンドラーに渡されるパラメーターはvarパラメーターに似ていますが、コンポーネントによって渡される前に初期化する必要がない点が異なります。それらが出力であるという事実は、それらが出力outであることを意味します。それらに値を割り当てることが期待されています。一方、 2 つのパラメーター (と) は変更できません。これらは、変更が許可されている 2 つのパラメーターの設定方法を決定する際に使用する値です。は、またはコンポーネント インスタンスが呼び出されたものになります。またはのような構文を使用して他の情報にアクセスする必要がある場合は、型キャストすることができます。constHeaderPasswordFileNameSenderRARCompTRARComponent(Sender)(Sender as TRARComponent)

繰り返しますが、このコンポーネントの適切なクラス名や、そのインスタンスの名前がわかりません。コンポーネントのクラス名がTRARComponentIDE のコンポーネント パレットにあり、それをフォームにドロップした場合、それは として宣言されRARComponent1: TRARComponent;、名前RARComponent1TRARComponent(Sender)適切な場所を使用します。

于 2011-06-02T00:38:15.620 に答える