|
|
|
|
1. How can I create or open an archive from stream?
To create or open archive in stream, use overloaded OpenArchive method:
procedure OpenArchive(Stream: TStream; Create: Boolean); overload;
Create parameter is used to specify if the archive is already created or ZipForge must create it.
Example:
| MemStream := TMemoryStream.Create;
|
| ZipForge1.OpenArchive(MemStream, True); // create archive in the stream
|
2. Can ZipForge update (add/replace files) a zip file that was previously
created using "Volume Size" limits?
No, this feature is not supported by ZipForge (as well as by other ZIP utilities)
3. Does ZipForge support large archives?
Yes, ZipForge can handle files larger than 4 GB. Just make sure that ZipForge.Zip64Mode property is set to zmAuto or zmAlways. Zip64Mode property is supported in Delphi 6 and higher and in C++ Builder 6.
4. Is ZipForge code threadsafe?
Yes, ZipForge could be safely used in a multithreaded application.
5. Even with Options.Recurse set to false, ZipForge adds files from
subfolders. How can exclude the subfolders?
If subfolder file name matches the speified mask, it is added with all subfolder files.
To exclude the subfolder, use FileAttr = faAnyFile - faDirectory:
| AddFiles('*.*', faAnyFile - faDirectory);
|
6. How can I add a file into specific folder inside the archive?
To do this, you can use TZipForge.OnStoreFile event.
Example:
procedure Form1.ZipForge1StoreFile(Sender: TObject; var FileName: string; var
FileAttr: LongWord; var Comment: String);
begin
// put all archived files into my_folder regardless of original files location
FileName := 'my_folder\' + ExtractFileName(FileName);
end;
7. How can I make the smallest console application with ZipForge?
If you have the source code version of ZipForge, you can switch off the {$DEFINE DIALOGS}
compiler directive, recompile the ZipForge units and then create a console application.
8. How can I uninstall ZipForge?
1. | Delete ZipForge directory completely
|
2. | Delete Windows\system32\vclZipForge*.bpl
|
9. Both TColor & TCompressionLevel use "clNone" and this is confusing the
compiler, how to solve this problem?
In this case you'll need to explicitly specify the unit where a constant is
defined by using the name of the unit preceding the constant.
The unit name is separated by a dot from the identifier:
Example:
// compression level
ZipForge1.CompressionLevel := ZipForge.clNone;
// color
Form1.Color := Graphics.clNone;
|
|