Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: CL | DM;

Вниз

Пример работы с ZLib   Найти похожие ветки 

 
Sphinx ©   (2005-03-16 22:29) [0]

Господа, не могли бы вы привести пример работы с Zlib-ом ?

Или объясните почему в следующем коде при aCompres.Free получается AV ? :(

procedure TForm1.Button2Click(Sender: TObject);
begin
//  CreateFile(PChar(Edit2.Text), 0, FILE_SHARE_READ, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
 aDest := TFileStream.Create(Edit2.Text, fmOpenWrite);
 aSource := TFileStream.Create(Edit1.Text, fmOpenRead);
 aCompres := TCompressionStream.Create(clDefault, aDest);
 aCompres.Write(aSource, aSource.Size);
 aDest.Free;
 aSource.Free;
 aCompres.Free;
end;


 
Piter ©   (2005-03-16 22:43) [1]

Sphinx ©   (16.03.05 22:29)
Господа, не могли бы вы привести пример работы с Zlib-ом ?


а разве с ним не идет пример работы?

объясните почему в следующем коде при aCompres.Free получается AV ?

А чему равен aCompres ДО вызова

TCompressionStream.Create(clDefault, aDest);7

и чему он же равен ДО вызова

aCompres.Free;

?


 
Sphinx ©   (2005-03-16 22:48) [2]

> а разве с ним не идет пример работы?
В Simple Дельфийской папки не нашел :(

> А чему равен aCompres ДО вызова

Это весь код, кроме объявления переменных больше ни чего нету...
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ZLib;

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Button1: TButton;
   Button2: TButton;
   OpenDialog1: TOpenDialog;
   Button3: TButton;
   Edit2: TEdit;
   Button4: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button4Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 aSource:  TFileStream;
 aDest:  TFileStream;
 aCompres: TCompressionStream;
 aDecompres: TDecompressionStream;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
   Edit1.Text := OpenDialog1.FileName;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//  CreateFile(PChar(Edit2.Text), 0, FILE_SHARE_READ, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
 aDest := TFileStream.Create(Edit2.Text, fmOpenWrite);
 aSource := TFileStream.Create(Edit1.Text, fmOpenRead);
 aCompres := TCompressionStream.Create(clDefault, aDest);
 aCompres.Write(aSource, aSource.Size);
 aDest.Free;
 aSource.Free;
 aCompres.Free;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
   Edit2.Text := OpenDialog1.FileName;
end;

end.


 
Piter ©   (2005-03-17 00:21) [3]

Sphinx ©   (16.03.05 22:48) [2]
Это весь код, кроме объявления переменных больше ни чего нету...


а я вроде не просил весь код :)

Я спрашивал, чему равен aCompres на строчках:

1) aCompres := TCompressionStream.Create(clDefault, aDest);

2) aCompres.Write(aSource, aSource.Size);

P.S. Дебагером посмотри


 
AlterEgo of WondeRu ©   (2005-03-17 00:36) [4]

я написал модуль, но правда он для ZlibEx, но легко переделать в стандартный
unit uCompressRoutines;

interface
uses
 Classes, ZlibEx;

function CompressStream (aSource, aTarget: TStream): Single;
procedure DecompressStream (aSource, aTarget: TStream);

implementation

function CompressStream (aSource, aTarget: TStream): Single;
var
 comprStream: TZCompressionStream;
begin
 aSource.Position := 0;
 comprStream := TZCompressionStream.Create(aTarget, zcMax);
 try
   comprStream.CopyFrom(aSource, aSource.Size);
   Result := comprStream.CompressionRate;
 finally
   comprStream.Free;
 end;
end;

procedure DecompressStream (aSource, aTarget: TStream) ;
var
 decompStream: TZDecompressionStream;
begin
 decompStream := TZDecompressionStream.Create(aSource);
 try
   aTarget.CopyFrom(decompStream, 0);
   aTarget.Position := 0;
 finally
   decompStream.Free;
 end;
end;

end.


и пример

                   BlobField := FieldByName("BLOB_CONTENT");
                   BS := CreateBlobStream(BlobField, bmWrite);
                   BS.Size := 0;
                   TempBMP.LoadFromFile(dlgOpen.FileName);

                   TempStream := TMemoryStream.Create;
                   try
                     TempBMP.SaveToStream(TempStream);
                     CompressStream(TempStream, BS);
                   finally
                     TempStream.Free;
                   end;



Страницы: 1 вся ветка

Текущий архив: 2005.03.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
1-1110810251
Chrom
2005-03-14 17:24
2005.03.27
Можно ли заблокировать клавиатуру и мышь программно?


1-1110786779
ser35
2005-03-14 10:52
2005.03.27
Закрытие формы при нажатии ESC


1-1110900914
Руслана
2005-03-15 18:35
2005.03.27
Можно ли отловить такое событие...


1-1110725366
mr-kack
2005-03-13 17:49
2005.03.27
прорисовка объекта по координатам...


14-1109937712
ex080D:07BBh
2005-03-04 15:01
2005.03.27
Пропаганда США?