Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизПример работы с 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.048 c