PDA

View Full Version : ایجاد فایل Zip



Yasersadegh
جمعه 28 اردیبهشت 1386, 23:52 عصر
سلام به دوستان عزیز
شرمنده من همیشه با سوال می یام و هیچ وقت هیچ حرکت مثبتی انجام نمی دم.
این بار سوالم در مورد فایل های زیپه.
چطوری میشه با کد نویسی دلفی چند تا فایل موجود بر روی هارد رو فشرده (Zip & Rar) کرد.!؟:متفکر:
اصلا با دلفی میشه چنین کاری کرد؟


با تشکر

Future
شنبه 29 اردیبهشت 1386, 00:23 صبح
دوست عزیز وقتی winzip را بطور کامل نصب کنی command line آن نیز نصب میشه که (command line یک فایل اجرایی جداگانه است که شما باید آنرا نصب کنی)بعد به راحتی می تونی آنرا در دلفی فراخوانی کنی. اگه مشکلت حل نشد بگو تا کدش را بدهم

Valadi
شنبه 29 اردیبهشت 1386, 07:02 صبح
بله امکان دارد شما باید از کامپونت های Easy Compression و Vcl zip و ... می تونی استفاده کنی

MNosouhi
شنبه 29 اردیبهشت 1386, 09:17 صبح
یکی از معروفترین کامپوننتها در این مورد مجموعه ziptv هستش که نتنها zip بلکه فرمتهای دیگه مانند rar و tar رو پوشش میده.

Yasersadegh
شنبه 29 اردیبهشت 1386, 10:21 صبح
میشه اگه کامپوننتهارو دارید رو سایت بذارید.!!

با تشکر

MNosouhi
شنبه 29 اردیبهشت 1386, 10:59 صبح
http://www.ziptv.com/downloads.htm

soroush_vs
شنبه 29 اردیبهشت 1386, 12:05 عصر
موردی که آقا/خانم Future گفتن به نظر من عالیه

MNosouhi
شنبه 29 اردیبهشت 1386, 13:01 عصر
موردی که آقا/خانم Future گفتن به نظر من عالیه
در اینصورت اگر روی یه سیستمی winzip نصب نباشه ، با مشکل دچار میشیم.
باید سعی کنیم تا آنجایی که ممکن است برنامه ای که مینویسیم به برنامه های دیگه وابسته نباشه.

Yasersadegh
شنبه 29 اردیبهشت 1386, 14:27 عصر
یکی از معروفترین کامپوننتها در این مورد مجموعه ziptv هستش که نتنها zip بلکه فرمتهای دیگه مانند rar و tar رو پوشش میده.
من فایلشو دانلود کردم . چظوری می تونم ازش استفاده کنم!!؟
اگه امکان داره یه نمونه کد یا برنامه را هم بذارید.!!

با تشکر

MNosouhi
شنبه 29 اردیبهشت 1386, 14:32 عصر
خودش دمو داره.

vcldeveloper
یک شنبه 30 اردیبهشت 1386, 01:53 صبح
می تونی از ZLib هم استفاده کنی که با خود دلفی هست (یونیت zlib.pas)

soroush_vs
یک شنبه 30 اردیبهشت 1386, 09:12 صبح
در اینصورت اگر روی یه سیستمی winzip نصب نباشه ، با مشکل دچار میشیم.
باید سعی کنیم تا آنجایی که ممکن است برنامه ای که مینویسیم به برنامه های دیگه وابسته نباشه.

این برنامه یک برنامه مجزا است که اصلا وابستگی به WinZip نداره یه برنامه است که باید با Command Prompt اجرا و بهش پارامتر بدید

soroush_vs
یک شنبه 30 اردیبهشت 1386, 09:47 صبح
می تونی از ZLib هم استفاده کنی که با خود دلفی هست (یونیت zlib.pas)

این یکی دیگه واقعا عالیه

Yasersadegh
یک شنبه 30 اردیبهشت 1386, 14:19 عصر
می تونی از ZLib هم استفاده کنی که با خود دلفی هست (یونیت zlib.pas)
چطوری می تونم ازش استفاده کنم. یعنی Zlib.pas رو به عنوان کامپوننت نصبش کنم؟:متفکر:
لطفا اگه نمونه دارید میشه بذارید؟:خجالت:

با تشکر

Hamid_PaK
یک شنبه 30 اردیبهشت 1386, 15:00 عصر
zlib را در قسمت یوززهای یونیت اضافه کنید و از دو کلاس TCompressionStream و TDecompressionStream می توانید برای فشرده سازی و بالعکس استفاده کنید ...
این هم یک مثال برای فشرده سازی و رها سازی :


procedure Tfrm_main.bt_doCompClick(Sender: TObject);
var
bytBuff:PByteArray;
bytSize:DWORD;
inStream,outStream:TMemoryStream;
zStream:TCompressionStream;
begin
inStream := TMemoryStream.Create;
try
outStream := TMemoryStream.Create;
inStream.LoadFromFile(in_anyPath.Text);
bytSize := inStream.Size;
ShowMessage(IntToStr(bytSize));
GetMem(bytBuff,bytSize);
try
inStream.Position := 0;
inStream.Read(pointer(bytBuff)^,bytSize);
outStream.Write(bytSize,SizeOf(bytSize));
zStream := TCompressionStream.Create(clMax,outStream);
try
ShowMessage(IntToStr(outStream.Position));
zStream.Write(pointer(bytBuff)^,bytSize);
finally
zStream.Free;
end;
outStream.SaveToFile(in_compPath.Text);
MessageBox(Handle,pChar('File compressed successfully ...'#9),'iNFO',MB_ICONINFORMATION);
bt_resetClick(nil);
finally
FreeMem(bytBuff);
outStream.Free;
end;
finally
inStream.Free;
end;
end;

procedure Tfrm_main.bt_deCompClick(Sender: TObject);
var
bytBuff:PByteArray;
bytSize:DWORD;
inStream,outStream:TMemoryStream;
zStream:TDecompressionStream;
begin
inStream := TMemoryStream.Create;
try
inStream.LoadFromFile(in_compPath.Text);
inStream.Read(bytSize,SizeOf(bytSize));
outStream := TMemoryStream.Create;
GetMem(bytBuff,bytSize);
try
zStream := TDecompressionStream.Create(inStream);
try
inStream.Position := 0;
zStream.Read(pointer(bytBuff)^,bytSize);
finally
zStream.Free;
end;
outStream.Write(pointer(bytBuff)^,bytSize);
outStream.SaveToFile(in_anyPath.Text);
MessageBox(Handle,pChar('File decompressed successfully ...'#9),'iNFO',MB_ICONINFORMATION);
bt_resetClick(nil);
finally
FreeMem(bytBuff);
outStream.Free;
end;
finally
inStream.Free;
end;
end;


یا حق ...