Array of constに変数を渡すには

解決


gravisfreak  2007-07-10 01:47:21  No: 26987

米田 昌司殿作成の、"統合アーカイバコンポーネント"を使用してファイルを
解凍しようとしていますが"UnpackFiles"の"FileList"に配列変数が渡せません

直接書き込めば問題なく動くのですが、ユーザーが選択した任意のファイルのみ
解凍したいのです。

"array of const"に配列変数を渡すにはどうしたら良いのでしょうか?
ご教授願います。

function UnpackFiles(Handle:HWND;Options:TArchiverOptions;DstPath:String;FileList:array of const ):Integer;

unit melt_main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ARCHIVES, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  arc:TArchiveFile;
  MeltStr:array[0..1] of string;
begin
   arc:= tArchiveFile.Create(form1);  //統合アーカイバコンポの実体を作成
   arc.FileName:=Edit1.Text;   //圧縮ファイルを指定
   arc.Options.x := 1;         // ディレクトリ情報を再現して解凍
   arc.Options.n := 1;         // 経過表示のダイアログを出しません。
   arc.OutputSize := 8192;     // 出力バッファサイズを指定

   MeltStr[0]:='01_*.txt';
   MeltStr[1]:='02_*.txt'; 

   //↓こんな感じにしたい
   arc.UnpackFiles(form1.handle,nil,'D:\temp',MeltStr);
   arc.UnpackFiles(form1.handle,nil,'D:\temp',['01_*.txt','02_*.txt']);
   //↑これは通る

   arc.Free;                   //統合アーカイバコンポの実体を消去
end;
end.


無理を通して道理しまった  2007-07-10 09:13:15  No: 26988

>"array of const"に配列変数を渡すにはどうしたら良いのでしょうか?
それは無理というもの。
TObjectで渡しましょうね。


通りがかり  2007-07-10 09:32:43  No: 26989

arc.UnpackFiles(form1.handle,nil,'D:\temp',[MeltStr[0], MeltStr[1]]);
これじゃ駄目ですか?


温(元)而知新、可以為師矣  2007-07-10 18:08:56  No: 26990

TObject(TStrings)でイインダヨ〜。


gravisfreak  2007-07-11 20:04:35  No: 26991

レスが遅れてすいません。
TStringsで渡せば良いんですね。
すごく難しく考えていました。

>無理を通して道理しまったさん、温(元)而知新、可以為師矣さん
  ありがとう御座いました。

>通りがかりさん
  実は、渡したい配列は2つではなく、もっと複数あるので
  ひとつひとつ入れたくありませんでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加