このDelphiラッパーと一緒に「7za.dll」を利用しようとしています-http://www.progdigy.com/?page_id = 13
このコードをC++に変換し、ラッパー自体を理解するのに問題があります。
procedure TMainForm.ExtractAllClick(Sender: TObject);
var Arch: I7zOutArchive;
begin
Arch := CreateOutArchive(CLSID_CFormat7z);
// add a file
Arch.AddFile('c:\test.bin', 'folder\test.bin');
// add files using willcards and recursive search
Arch.AddFiles('c:\test', 'folder', '*.pas;*.dfm', true);
// add a stream
Arch.AddStream(aStream, soReference, faArchive, CurrentFileTime, CurrentFileTime, 'folder\test.bin', false, false);
// compression level
SetCompressionLevel(Arch, 5);
// compression method if <> LZMA
SevenZipSetCompressionMethod(Arch, m7BZip2);
// add a progress bar ...
Arch.SetProgressCallback(...);
// set a password if necessary
Arch.SetPassword('password');
// Save to file
Arch.SaveToFile('c:\test.zip');
// or a stream
Arch.SaveToStream(aStream);
end;
ラッパーDelphiユニットの追加ラッパーを作成しました。これは、C ++コードに含まれている場合、上記でラップされ、機能します。今、私はそれをさらに一歩使用したいと思います-C++コードで上記を直接呼び出します。
I7zOutArchive
このインターフェイスをC++で適切に初期化、構築、およびリリースするにはどうすればよいですか?
上記のコードで破棄(メモリを解放)する必要がありますか、それともスコープ外になると自動的に破棄されますか(私は通常boost::scoped_ptr
、仕事をするために使用しますが、ここで必要なもののようなものです)?