المشاركات : 75
المواضيع 26
:
: 0
الإنتساب : Dec 2011
السلام عليكم
شاهدة في أحد البرامج طريقة رائعة في حفظ نسخة من قاعدة البيانات على شكل ملف مضغوط
كأرشف مثلاً و إستعادتها لما يريد المستخدم هذا
أضن أنه يوجد مكون يلبي هذا الغرض بحثت ولم أجد المكون المتوافق مع نسخة Delphi XE
المشاركات : 628
المواضيع 72
:
: 211
الإنتساب : Jun 2010
و عليكم السلام
إبحث جيدا تجد مكونات تقوم بالضغط هذه وظيفة تقوم بضغط الملفات :
كود :
uses
[color=Red]ZLib[/color]
procedure CompressFiles(Files : TStrings; const Filename : String);
var
infile, outfile, tmpFile : TFileStream;
compr : TCompressionStream;
i,l : Integer;
s : String;
begin
if Files.Count > 0 then
begin
outFile := TFileStream.Create(Filename,fmCreate);
try
{ the number of files }
l := Files.Count;
outfile.Write(l,SizeOf(l));
for i := 0 to Files.Count-1 do
begin
infile := TFileStream.Create(Files[i],fmOpenRead);
try
{ the original filename }
s := ExtractFilename(Files[i]);
l := Length(s);
outfile.Write(l,SizeOf(l));
outfile.Write(s[1],l);
{ the original filesize }
l := infile.Size;
outfile.Write(l,SizeOf(l));
{ compress and store the file temporary}
tmpFile := TFileStream.Create('tmp',fmCreate);
compr := TCompressionStream.Create(clMax,tmpfile);
try
compr.CopyFrom(infile,l);
finally
compr.Free;
tmpFile.Free;
end;
{ append the compressed file to the destination file }
tmpFile := TFileStream.Create('tmp',fmOpenRead);
try
outfile.CopyFrom(tmpFile,0);
finally
tmpFile.Free;
end;
finally
infile.Free;
end;
end;
finally
outfile.Free;
end;
DeleteFile('tmp');
end;
end;
لفك الضغط :
كود :
procedure DecompressFiles(const Filename, DestDirectory : String);
var
dest,s : String;
decompr : TDecompressionStream;
infile, outfile : TFilestream;
i,l,c : Integer;
begin
// IncludeTrailingPathDelimiter (D6/D7 only)
dest := IncludeTrailingPathDelimiter(DestDirectory);
infile := TFileStream.Create(Filename,fmOpenRead);
try
{ number of files }
infile.Read(c,SizeOf(c));
for i := 1 to c do
begin
{ read filename }
infile.Read(l,SizeOf(l));
SetLength(s,l);
infile.Read(s[1],l);
{ read filesize }
infile.Read(l,SizeOf(l));
{ decompress the files and store it }
s := dest+s; //include the path
outfile := TFileStream.Create(s,fmCreate);
decompr := TDecompressionStream.Create(infile);
try
outfile.CopyFrom(decompr,l);
finally
outfile.Free;
decompr.Free;
end;
end;
finally
infile.Free;
end;
end;
للتنفيذ:
PHP كود :
CompressFiles(ListBox1.Items,'c:\Folder.myzip');
أدبني الدهر فأراني نقص عقلي وإذا ما ازددت علما زادني علما بجهلي
المشاركات : 75
المواضيع 26
:
: 0
الإنتساب : Dec 2011
وجدت مكون VCLZip Pro متخصص في تحزيم ملفات قواعد البيانات مثلاً Access على شكل ملف zip
و يقوم تلقائياً بتسمية الملف بتاريخ اليوم و يتيح لك إستعادة ملف قاعدة البيانات متى أردت
و هذا ما أبحث عنه بالضبط لكن المشكلة أنه متوافق مع Delphi 7 و Delphi 6 و Delphi 5
المشاركات : 7
المواضيع 0
:
: 0
الإنتساب : Oct 2010
11-02-2012, 02:26 PM
(آخر تعديل لهذه المشاركة: 11-02-2012, 07:56 PM بواسطة kachwahed.)
أخي لا داعي لكل هذا اليك الكود
كود :
application.Terminate;
ShellExecute(Handle,'','WinRar','a NOM.rar *.* ',nil, SW_NORMAL)
قم بتغيير بياناتك فقط اسم قاعدة البيانات و نوع الملفات المراد وضعها في ارشيف
المشاركات : 111
المواضيع 41
:
: 29
الإنتساب : Apr 2011
هل يمكن التوضيح أكثر لإنني وجدت كود ولم استطع التغيير عليه او حتي فهمه
وخاصة الفقرة الأخيرة
var
archiver : TZipForge;
begin
// Create an instance of the TZipForge class
archiver := TZipForge.Create(nil);
try
with archiver do
begin
// Set the name of the archive file we want to create
FileName := 'C:\test.zip';
// Because we create a new archive,
// we set Mode to fmCreate
OpenArchive(fmCreate);
// Set base (default) directory for all archive operations
BaseDir := 'C:\';
// Add file C:\test.txt the archive; wildcards can be used as well
AddFiles('c:\test.txt');
CloseArchive();
end;
except
on E: Exception do
begin
Writeln('Exception: ', E.Message);
// Wait for the key to be pressed
Readln;
end;
end;