いつもお世話になっています
Delphi2009 + 統合アーカイバコンポーネントで書庫内の一部ファイルを閲覧するためにテンポラリに解凍したりしています
今まで不具合無いものと思って以下の要領で使ってきました
procedure UnpackFileArchive(ArchiveFileName: string;
OpenFileName: TStrings; OpenDirectry: string);
begin
with TArchiveFile.Create( Self )do
begin
try
FileName := ArchiveFileName;
Options.x := 0;
OutputSize := 8192;
Options.n := 1;
Options.jso:=1;
Options.jse:=1;
UnpackFiles(Handle,nil,OpenDirectry,[OpenFileName] );
finally
ReleaseArchiverDLL;
Free;
end;
end;
end;
Delphi5 時代と同じ書き方ですが、総合アーカイバコンポーネント自体は Variants などの変更を加えています
しかし、書庫内のフォルダ名に「同」と「[」の二文字がある時に限り解凍出来ないことがわかりました
一時的に解凍するファイルは常に一つですので
UnpackFiles(Handle,nil,OpenDirectry,[OpenFileName.Text] );
にしてテストしましたが今度は書庫内全て解凍されてしまいました
function TArchiveFile.UnpackFiles に渡った時点での FileList:array of const の値を比べてみましたが
よくわかりませんでした
以上、よろしくお願いいたしますm(_ _)m
Terry さん,こんにちは.
実際に,統合アーカイバコンポーネントの中がどうなっているかはわからないのですが,
(調べる気力もないのです.スミマセンね)
>今度は書庫内全て解凍されてしまいました
という現象から推測すると,やはり文字列関係の処理なんではないでしょうか.
String から AnsiString への受け渡し関係ですね.多分.
Mr.XRAY さん、ありがとうございます
特殊な例なので結局処理時に判定して「仕様」ということにしました
ツイート | ![]() |