We are trying to use the 7-Zip Delphi API
([login to view URL]), unfortunately we ran into a problem.
We are having trouble calling the SevenZipSetBindInfo function.
The command line equivalent of what we’re trying to pass is:
" -mb0:1 -mb0s1:2 -mb0s2:3" (without qoutas)
This string gives the desired compression ratio.
This function does the following:
procedure SevenZipSetBindInfo(Arch: I7zOutArchive; const bind: UnicodeString);
begin
[login to view URL]('B', bind);
end;
Whatever parameter we pass as "bind" appears to be rejected here.
Now passing this binding string accurately is really important - if we don’t, then the file sizes grow like 15% more according to our existing C++l ibrary solution
and this is not acceptable for us.
We are intended to remove C++ side from our pure Delphi product.
Could you provide me with an estimate of time and price (seperate for each item) to figure out the
1- above issue (binding parameter),
and then to
2- implement a high-level API per the function specifications below?
TPasswordCallback = function(lpPassword: PChar): Integer; stdcall;
TProgressCallback = function(lpCurrentFileName: PChar; uiCompleted,
uiTotal: Int64): Integer; stdcall;
TOverwriteCallback = function(lpArchiveFileName, lpDiskExistingFileName: PChar;
uiArchiveFileSize, uiDiskExistingFileSize: Int64; ftArchiveFileLastWrite,
ftDiskExistingFileLastWrite: TFILETIME): Integer; stdcall;
TErrorCallback = function(lpCurrentFileName: PChar; dwErrorCode: LongWord): Integer; stdcall;
function ListArchiveContents(Archive, Password: String; var Error: String;
Names, Encrypted, Sizes, CompSizes, DateTimes: TStrings;
PasswordCallback: TPasswordCallback; AllowForce: Boolean = True): Boolean;
function ExtractArchiveContents(Archive, Password, Folder: String; WithPath,
Overwrite: Boolean; var Error: String; Items: TStrings; Progress: TProgressCallback;
OverwriteBack: TOverwriteCallback; ErrorBack: TErrorCallback; PasswordBack: TPasswordCallback): Boolean;
function CompressArchiveContents(Archive, Password, Options: String; Kind, Path: Integer;
var Error: String; Items, Recursive: TStrings; Progress: TProgressCallback;
ErrorBack: TErrorCallback): Boolean;
*) Everything must target Unicode versions of Delphi XE2.
*) We will provide a (TEST) sample archive (contains several files with different formats eg: txt, bmp, jpg, exe, npg, avi, mp3, wav etc.)
that has been prepared with our existing C++ interface and expect the same result from your solution. This archive will be the proof of your work.