米田 昌司殿作成の、"統合アーカイバコンポーネント"を使用してファイルを
解凍しようとしていますが"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.
>"array of const"に配列変数を渡すにはどうしたら良いのでしょうか?
それは無理というもの。
TObjectで渡しましょうね。
arc.UnpackFiles(form1.handle,nil,'D:\temp',[MeltStr[0], MeltStr[1]]);
これじゃ駄目ですか?
TObject(TStrings)でイインダヨ〜。
レスが遅れてすいません。
TStringsで渡せば良いんですね。
すごく難しく考えていました。
>無理を通して道理しまったさん、温(元)而知新、可以為師矣さん
ありがとう御座いました。
>通りがかりさん
実は、渡したい配列は2つではなく、もっと複数あるので
ひとつひとつ入れたくありませんでした。
ツイート | ![]() |