統合アーカイバコンポーネントのUnpackFiles

解決


Terry  2013-04-07 09:36:35  No: 44216

いつもお世話になっています

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


Mr.XRAY  2013-04-14 05:19:42  No: 44217

Terry さん,こんにちは.
実際に,統合アーカイバコンポーネントの中がどうなっているかはわからないのですが,
(調べる気力もないのです.スミマセンね)

>今度は書庫内全て解凍されてしまいました

という現象から推測すると,やはり文字列関係の処理なんではないでしょうか.
String から AnsiString への受け渡し関係ですね.多分.


Terry  2013-04-14 06:08:33  No: 44218

Mr.XRAY さん、ありがとうございます
特殊な例なので結局処理時に判定して「仕様」ということにしました


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

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






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