Coder Social home page Coder Social logo

abbrevia's Introduction

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.

abbrevia's People

Contributors

jimmckeeth avatar romankassebaum avatar tuffff avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

abbrevia's Issues

strange code in AbDfInW.pas

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

AbUtils AbDriveIsRemovable

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.

The component does not work on Android in Delphi 11

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)

compilermessages.txt

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?

Error creating new cab using TAbCabArchive

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;

ZIP + password

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:
image

... but with a password it crashes with an error :(
image

Project1.zip

Compilation in Delphi 10 for android

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.

Delphi 2010 support is broken.

Latest version cannot be compiled in delphi 2010. At least a release with the last stable commit for this version could be provided.

Bzip2 compression broken with Delphi 11

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.

Not an Abbrevia bug - ShellShock Inquiry

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...

How to decompress an Abbrevia compressed binary file using C#

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.

unit AbHexVw

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'

Compress Stream to Stream

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.

Package compatible problem

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.

Compile error PAnsiChar Pointer Delphi 10.2

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?

VDI files

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

Update BZIP2 obj files to v1.0.8

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.

Load zip file containing file without datetime will throw error

AbUtils.pas

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 :

  • TAbUnzipper
  • TAbListView

TBZCompressionStream fail in D11

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 }

Installing to Alexandria 11.2

Hi,
When I install AbbreviaVCLDDesign.dpk it fails with errors:
[dcc32 Fatal Error] AbbreviaVCLD.dpk(56): E2225 Never-build package 'designide' must be recompiled
[dcc32 Fatal Error] AbbreviaVCLDDesign.dpk(60): E2202 Required package 'AbbreviaVCLD' not found

error

Range check error when opening tgz file

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.