turbopack / abbrevia Goto Github PK
View Code? Open in Web Editor NEWAbbrevia is a compression toolkit for Delphi and C++Builder.
Abbrevia is a compression toolkit for Delphi and C++Builder.
TurboPack Abbrevia Table of contents 1. Introduction 2. Package names 3. Installation ============================================== 1. Introduction Abbrevia is a compression toolkit for Delphi and C++Builder. It supports compressing and decompressing PKZIP, Microsoft CAB, tar, gzip, and bzip2 archives, and can create self-extracting executables. On Windows it also provides Delphi wrappers for the LZMA, Bzip2, and WavPack SDKs, and PPMd decompression. Abbrevia also has several visual controls that simplify displaying and manipulating archives, including treeview and listview components. This is a source-only release of TurboPack Abbrevia. It includes designtime and runtime packages for Delphi and C++Builder and supports Win32, Win64, OSX, iOS, Linux, and Android. ============================================== 2. Package names TurboPack Abbrevia package names have the following form: AbbreviaD.bpl (Delphi Runtime for all platforms) AbbreviaVCLD.bpl (Delphi Runtime for the VCL) AbbreviaVCLDDesign.bpl (Delphi Designtime VCL) AbbreviaFMXDDesign.bpl (Delphi Designtime FMX) AbbreviaC.bpl (C++Builder Runtime for all platforms) AbbreviaVCLC.bpl (C++Builder Runtime for the VCL) AbbreviaVCLCDesign.bpl (C++Builder Designtime VCL) AbbreviaFMXCDesign.bpl (C++Builder Designtime FMX) ============================================== 3. Installation To install TurboPack Abbrevia into your IDE, take the following steps: 1. Unzip the release files into a directory (e.g., d:\abbrevia). 2. Start RAD Studio. 3. Add the source subdirectory (e.g., d:\abbrevia\source) to the IDE's library path. For C++Builder, add the hpp subdirectory (e.g., d:\abbrevia\source\hpp\Win32\Release) to the IDE's system include path. 4. Open & install the designtime package specific to the IDE being used. The IDE should notify you the components have been installed.
Hi,
I came across code in procedure TAbDfInputWindow.iwSlide; and don't get it(win64 compilation, but it don't matter):
Buffer := Integer(FBuffer);
.....
if (ListItem^ < Buffer) then
ListItem^ := 0;
If depends on where FBuffer is allocated. I made a test(zip file) and even though in one case Buffer came positive and in second case negative(so code behaved differently in this place), overall result was the same. Is it a potential bug? Can somebody shed a bit light on the matter?
tomas
Hi. Not sure this project is active but thought I'd add an issue I had with AbZipKit and AbDriveIsRemovable.
When using a USB drive for storage of my zip files, I kept getting "Insert Floppy" messages. This is a 2 gig USB. I tracked it down to AbDriveIsRemovable. I just hard coded it to return "false" so I could make it work. However, maybe a property could be added, something like "CheckRemovable
," or maybe add some additional checks to the result from AbDriveIsRemovable, like archivetype = atSpannedZip, and/or SpanningThreshold > 0
. Or, is there some other way to handle this problem besides changing the source function?
Just thought I'd put this out there.
Hello.
I've installed the component without any problem. I've used the packages AbbreviaD.bpl and AbbreviaFMXDDesign.bpl located in the Alexandria folder.
The component is installed ok in the ID.
The problem is I Can't use in Android.
It's easy to reproduce: put a TAbZipper in a form. Compile with Android Platform target selected...
I have 67 compiler errors (see the attached files)
Some of the errors are very strange to me. For example, the first error: "[DCC Error] AbUtils.pas(1079): E2023 Function needs result type" refenced the followin line in AbUtils.pas:
function AbDateTimeToDosFileDate(Value : TDateTime) : Integer;
What?. The function already has a result type (integer).
Could you help me please?
When creating a new cab file with TAbCabArchive a EAbFCIAddFileError is thrown with message "FCI cannot add file". This is due to FCICreate not having been called. Here is simple code to reproduce the issue:
fn := 'somefile.cab'; // use whatever filename you want
cab := TAbCabArchive.Create(fn, fmCreate);
cab.AddFiles('*.*', faAnyFile); // add whatever files you want (exception here)
cab.Save;
To workaround the issue I can add a call to Load which will make a call to FCICreate but this deviates from how other archives are created (such as TAbGzipArchive).
fn := 'somefile.cab';
cab := TAbCabArchive.Create(fn, fmCreate);
cab.Load; // forces call to FCICreate
cab.AddFiles('*.*', faAnyFile);
cab.Save;
How to open a password-protected *.xlsx?
var
Li: integer;
Lu: TAbUnZipper;
begin
Lu := TAbUnZipper.Create(nil);
try
Lu.ArchiveType := atZip;
Lu.ForceType := true;
Lu.FileName := FFile;
Lu.Password := FPass;
for Li := 0 to Lu.Count - 1 do Memo1.Lines.Add(Lu.Items[Li].FileName);
finally
Lu.Free;
end;
end;
Without a password the file opens ok:
Hi, i have installed Delphi 10 Seattle trial version. With "Getit" i install Abbrevia TurboPack 10.0 ...components from packed have problem in compilation for android platform. When i use any component fro Abbrevia on blank form then i have in debugging this error:
[DCC Error] E2597 ....\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: error: cannot find -lbz2
In compilation for windows is all OK.
How fix it?
Thanks you, Michal.
Latest version cannot be compiled in delphi 2010. At least a release with the last stable commit for this version could be provided.
If the password property is empty the OnNeedPassword event is correctly called.
If the password is not valid the OnNeedPassword event is not called.
Is it possible to change ZipCrypto to AES-256? ๐ค
DON'T WORK WITH BZIP2 1.0.8 FORMAT
Hello,
the following code will raise an exception "EBZCompressionError" in "TBZCompressionStream.Seek" if compiled with Delphi 11:
procedure TForm1.Button1Click(Sender: TObject);
var
Source: TMemoryStream;
CompressionStream: TStream;
Dest: TMemoryStream;
begin
Source := TMemoryStream.Create;
try
Source.LoadFromFile('C:\temp\temp.txt');
Dest := TMemoryStream.Create;
try
CompressionStream := TBZCompressionStream.Create(bs1, dest);
try
CompressionStream.CopyFrom(Source, 0);
finally
CompressionStream.Free;
end;
finally
Dest.Free;
end;
finally
Source.Free;
end;
end;
In Delphi 11 TStream.CopyFrom has changed a lot. I think this is the reason for the error.
Just an idea...
I've finally recently upgraded my development environment from Delphi XE7 to Delphi 10.2.3 Tokyo (yeah, I'm still behind the times!), and in doing so, found it very cool to see this (and several other) package available in GetIt Package Manager (GPM). Previously, I had come here (before that, SourceForge, and before that, purchased from TurboPower!) for the former TurboPower packages, but I found no support for ShellShock. I grabbed the latest from SourceForge (I think), but found a number of problems. I finally got it to work, but wished I could have just gotten it form GPM or here.
Do you have any plans to add that package here? Would you like someone to help a bit? I can certainly help with identifying what I've done and do a bit of testing...
Hi, I have a compresses stream generated by a another application that uses Abbrevia and I have to decompress it using a C# application. The stream (binary file for me) doesn't have any standard header and every c# library say that the stream is not recognized. What can I do? Is there a compiled utility tu use as external application?
Regards
G.
Line:
{$I AbDefine.inc}
Needs to go after:
unit AbHexVw;
Otherwise I get:
[Error] AbDefine.inc(99): Constant expression expected
[Fatal Error] AbbreviaVCL.dpk(70): Could not compile used unit '....\source\AbHexVw.pas'
Hello, I would like to know if there is any example to compress stream to stream.
Ex:
I have a DataSet that I transform into a Stream, and I would like to compress the stream to another stream.
Today I use zlib to do the compression, but I'm looking for alternatives.
Thanks.
Hello,
compiling a package which references an Abbrevia one generated this error:
[dcc32 Fatal Error] Controller.dpk(46): E2202 Required package 'getit' not found
getit package is required:
Add getit.
getit contains implicit unit(s) AbBrowse, AbBzip2Typ, AbBytes, AbBitBkt, AbExcept, AbResString, AbConst, AbUtils, AbCharset, AbVMStrm, AbBzip2, AbTarTyp, AbArcTyp, AbDfBase, AbGzTyp, AbDfEnc, AbDfPkMg, AbDfCryS, AbDfStrm, AbDfXlat, AbDfHufD, AbDfInW, AbDfDec, AbDfOutW, AbZipTyp, AbSpanSt, AbCabTyp, AbFciFdi, AbBase, AbZBrows, AbUnzPrc, AbUnzOutStm, AbSWStm, AbWavPack, AbCrtl, AbPPMd, AbLZMA.
Best regards.
Using Delphi 10.2 Tokyo, with the latest commit of Abbrevia, I got an error when compiling in AbCharset.pas and AbZipTyp.pas for Win32, during building the package "AbbreviaD240.bpl"
[dcc32 Error] AbCharset.pas(263): E2010 Incompatible types: 'PAnsiChar' and 'Pointer'
[dcc32 Error] AbZipTyp.pas(1494): E2010 Incompatible types: 'PAnsiChar' and 'Pointer'
At those lines, we find:
OemToCharBuff(@avalue[0], PChar(Result), Length(Result));
OemToCharBuff(@(pBuffer[0]), PChar(FFileName), Length(FFileName));
Both lines were changed in 58e9ff4
I can compile if I revert the changes to those lines from the mentioned commit, but there's probably something I'm missing - anyone got a hint?
i'm using TAbZipper in my application, and when i compress vdi files all be fine, but the uncompress process results an error, like "your file is not valid or corrupt", someone know why this happened?
p.s.:sorry the english i'm brazilian
Looks like abbrevia still using old BZIP2 obj files from v1.0.5 while a new version (1.0.8) has already come out in 2019.
Need to update this one.
function AbDosFileDateToDateTime(FileDate, FileTime : Word) : TDateTime;
{$IFDEF MSWINDOWS}
var
Temp : Integer;
begin
LongRec(Temp).Lo := FileTime;
LongRec(Temp).Hi := FileDate;
Result := FileDateToDateTime(Temp); //error in here, Invalid argument to date encode
{$ENDIF MSWINDOWS}
Component that I used :
Due to changes in System.Classes in Delphi 11, TBZCompressionStream.Seek fails, because it is called with soBeginning or soEnd.
This has already been discussed in #19 but not yet solved.
Workaround:
function TBZCompressionStream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64;
var
conv64 : TLargeInteger;
begin
if (Offset = 0) and (Origin = soCurrent) then begin
conv64.LowPart := FBZRec.total_in_lo32;
conv64.HighPart := FBZRec.total_in_hi32;
Result := conv64.QuadPart;
end
else // <<
if (Origin in [soBeginning, soEnd]) then // << Workaround
Result := 0 // <<
else
raise EBZCompressionError.Create('Invalid stream operation');
end; { TBZCompressionStream }
I can not open the attached tgz file with Abbrevia.
ParkLan.zip
(the tgz file is zipped so that github will accept it)
See code and callstack below
z:=TAbUnzipper.Create(nil);
z.TarAutoHandle:=True;
z.Stream:=str;
:770a96c2 KERNELBASE.RaiseException + 0x62
AbBytes.TAbBytes.StrLCopy($467E179,???,0)
AbBytes.TAbBytes.StrLCopy($57794B0,'',100)
AbBytes.TAbBytes.StrPLCopy($57794B0,'',100)
AbTarTyp.TAbTarItem.SetFileName('')
AbTarTyp.TAbTarItem.Create
AbTarTyp.VerifyTar($7B745F0)
AbBrowse.AbDetermineArcType($7B745F0)
AbZBrows.TAbCustomZipBrowser.SetStream($7B745F0)
TBufferedFileStream is faster than TFileStream to write to Disk, I have 5gb files and they are taking 40 minutes to compress
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.