peymanjon
یک شنبه 15 بهمن 1391, 09:59 صبح
سلام خدمت دوستان...
من یکسری فایل های dll و bpl و exe بصورت zip شده دارم که در دیتابیس می باشد ، من آن ها را دریافت می کنم و در محلی ذخیره می کنم ، الان می خواهم این فایل را unzip کنم با جستجو در سایت یکسری کد هایی پیدا کردم مثل کد زیر که متاسفانه بعد از unzip شدن حجم فایل بدست آمده (صفر) 0 می باشد و درست این کار را انجام نمی دهد
تابع unzip من :
Function TMainForm.UnZip(Source:TMemoryStream):TMemoryStrea m;
var
DeComprStream:TDecompressionStream;
Buffer: Array[0..4000] of char;
BufLen: Integer;
begin
Result:=TMemoryStream.Create;
DeComprStream:=TDecompressionStream.Create(Source) ;
try
BufLen:=DeComprStream.Read(Buffer,SizeOf(Buffer));
while BufLen>0 do
begin
Result.Write(Buffer,BufLen);
BufLen:=DeComprStream.Read(Buffer,SizeOf(Buffer));
end;
Result.Seek(0,soFromBeginning);
finally
DeComprStream.Free;
end;
end;
و اینم نحوه ی فراخوانی آن :
source:=TMemoryStream.Create();
Dest:=TMemoryStream.Create();
source.LoadFromFile('path zip file');
Dest:=UnZip(source);
Dest.SaveToFile('path unzip file');
من شدیداً لازم دارم که با کد این کار را انجام بدهم و نمی تونم یه برنامه مثل winrar را فراخوانی کنم و از طریق آن این کار را انجام دهم .
لطفاً اگه تابع من مشکل دارد به من کمک کنید و یا اگر تابعی دارید که مطمئن هستید درست است لطف کنید اینجا قرار دهید تا من استفاده کنم.
با تشکر از زحمات شما.
من یکسری فایل های dll و bpl و exe بصورت zip شده دارم که در دیتابیس می باشد ، من آن ها را دریافت می کنم و در محلی ذخیره می کنم ، الان می خواهم این فایل را unzip کنم با جستجو در سایت یکسری کد هایی پیدا کردم مثل کد زیر که متاسفانه بعد از unzip شدن حجم فایل بدست آمده (صفر) 0 می باشد و درست این کار را انجام نمی دهد
تابع unzip من :
Function TMainForm.UnZip(Source:TMemoryStream):TMemoryStrea m;
var
DeComprStream:TDecompressionStream;
Buffer: Array[0..4000] of char;
BufLen: Integer;
begin
Result:=TMemoryStream.Create;
DeComprStream:=TDecompressionStream.Create(Source) ;
try
BufLen:=DeComprStream.Read(Buffer,SizeOf(Buffer));
while BufLen>0 do
begin
Result.Write(Buffer,BufLen);
BufLen:=DeComprStream.Read(Buffer,SizeOf(Buffer));
end;
Result.Seek(0,soFromBeginning);
finally
DeComprStream.Free;
end;
end;
و اینم نحوه ی فراخوانی آن :
source:=TMemoryStream.Create();
Dest:=TMemoryStream.Create();
source.LoadFromFile('path zip file');
Dest:=UnZip(source);
Dest.SaveToFile('path unzip file');
من شدیداً لازم دارم که با کد این کار را انجام بدهم و نمی تونم یه برنامه مثل winrar را فراخوانی کنم و از طریق آن این کار را انجام دهم .
لطفاً اگه تابع من مشکل دارد به من کمک کنید و یا اگر تابعی دارید که مطمئن هستید درست است لطف کنید اینجا قرار دهید تا من استفاده کنم.
با تشکر از زحمات شما.