[Back to DELPHI SWAG index]  [Back to Main SWAG index]  [Original]


{If you wan't to use LZ compression from inside Delphi there is a couple of API function calls that
you can use to do the trick.  But they only let you Uncompress the file! And not Compress it!
Well that is what I have foud anyway.
Here is an extract example from a program that I have written a while ago:}

procedure TForm1.Decomp;
var
  StringFIName, StringFOName : String;
  FIStruct, FOStruct         : TOFStruct;
  HandleFOpen, HandleFWrite  : Integer;
  success                    : LongInt;
begin
  {Open the Input File that is Compressed}
  StringFIName  := FileListBox1.Filename + #0;
  PIFileName    := @StringFIName;
  HandleFOpen   := LZOpenFile(@StringFIName[1], FIStruct, OF_READ or OF_PROMPT);
  if HandleFOpen < 0 then
    MessageDlg('Error Opening Input File : '+ StringFIName, mtInformation,
    [mbOk], 0);
  {Open the Output File that is Uncompressed!}
  StringFOName  := 'c:\WallP.bmp' + #0;
  POFileName    := @StringFOName;
  HandleFWrite  := LZOpenFile(@StringFOName[1], FOStruct, OF_CREATE);
  if HandleFWrite < 0 then
    MessageDlg('Error Creating Output File' + StringFOName, mtInformation, [mbOk], 0);
  {Now we can copy/Uncompress the file}
  success := LZCopy(HandleFOpen, HandleFWrite);
  if success < 0 then
    MessageDlg('Error Copying Input File to Output File', mtInformation, [mbOk], 0);
  {All finished, so lets Close the Input File}
  LZClose(HandleFOpen);
  LZClose(HandleFWrite);
end;

You will need to add LZEXPAND in the Uses clause as well.


[Back to DELPHI SWAG index]  [Back to Main SWAG index]  [Original]