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.
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.
DON'T WORK WITH BZIP2 1.0.8 FORMAT
Is it possible to change ZipCrypto to AES-256? 🤔
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
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)
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 }
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
If the password property is empty the OnNeedPassword event is correctly called.
If the password is not valid the OnNeedPassword event is not called.
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.
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.
When requesting a removable disk, Abbrevia still refers it as a “Floppy” disk. Suggest changing “floppy” strings in AbResString.pas to just “disk” or “removable disk” since floppy disks are obsolete.
Latest version cannot be compiled in delphi 2010. At least a release with the last stable commit for this version could be provided.
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.
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,
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.
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...
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 :
In a iOS mobile app, zipping up a small set of files does not cause an error. However, zipping up a large set of files, maybe a total of 8MB or more, iOS errors with tmpPath/VMSXXXXXX file or directory not found. This does not seem to happen on Android with the same set of files. Maybe size does matter.
VMSXXXXXX is a temp file created in AbUtils.pas. VMS is short for Virtual Memory Stream. See AbVMStrm.pas.
Almost as if it didn’t need to create that swap file, but another area thinks it had to?
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?
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.
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:
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;
TBufferedFileStream is faster than TFileStream to write to Disk, I have 5gb files and they are taking 40 minutes to compress
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?
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.
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.