PDA

View Full Version : سوال: تبدیل GZ Deflate در دلفی



Hamid_PaK
یک شنبه 24 مرداد 1389, 05:53 صبح
سلام؛

کسی از دوستان اطلاعاتی در مورد نحوه تبدیل و تشکیل این بستر فشرده سازی داره؟
در حقیقت من قصد دارم که یک رشته که از PHP ارسال شده رو از طریق دلفی از حالت فشرده خارج کنم، این رشته در PHP با روال gzdeflate فشرده شده.

لطفا راهنمایی کنید، یا حق.

Hamid_PaK
یک شنبه 24 مرداد 1389, 06:27 صبح
فکر کنم که سوال رو در بخش درستی ارسال نکردم، علی جان زحمتش رو بکش.

یا حق.

vcldeveloper
دوشنبه 25 مرداد 1389, 01:41 صبح
در حقیقت من قصد دارم که یک رشته که از PHP ارسال شده رو از طریق دلفی از حالت فشرده خارج کنم، این رشته در PHP با روال gzdeflate فشرده شده.
خب، اون تابع رشته را با چه فرمتی فشرده میکنه؟ از اسمش بر میاد که از gzip استفاده میکنه. اگر gzip باشه، الگوریتم فشرده سازی اش با zlib یکی هست، فقط headerها فرق می کنند. خودِ zlib توابعی برای کار با gzip داره. در دلفی به طور استاندارد یک پیاده سازی برای zlib وجود داره. علاوه بر اون، کدهای دیگه ایی هم برای پشتیبانی از zlib در دلفی وجود دارند. فکر کنم خودِ سایت zlib هم یک port برای دلفی ارائه میکنه.

در بعضی از کامپوننت های نوشته شده برای دلفی هم پیاده سازی بازگشایی داده های gzip پیدا میشه، مثلا فست ریپورت از همین فرمت برای فشرده سازی گزارش های خودش استفاده میکنه، یا در Indy، کامپوننت IdHttp از بازگشایی این فرمت پشتیبانی میکنه، چون ارسال داده ها از وب سرور به مرورگر به صورت فشرده شده با gzip یک امر رایج محسوب میشه.

Hamid_PaK
دوشنبه 25 مرداد 1389, 02:06 صبح
سلام علی جان؛
بله من خودم هم این موضوع رو بررسی کرده بودم کلا سیستم فشره سازی zLib بر پایه DEFLATE هست ولی مشکل اینجا بود که من نتونستم کتابخانه ی DEFLATE رو پیدا کنم، از zlib هم نمی شه برای بازکردن DEFLATE استفاده کرد چرا که همونطور که خودت هم گفتی zlib از 2 بایت در ابتدا و 4 بایت در انتها که adler32 هست پیروی میکنه ولی Deflate نه؛ پس اگه این 6 بایت رو نداشته باشی نمیتونی رشته رو بازگشایی بکنی (من که که رشته رو نمی سازم که، از PHP میاد).
به هر حال اگر راحی بلدی که با همون کتابخانه ی zlib بشه رشته فشرده deflate رو از حالت فشرده خارج کرد خوشحال میشم بدونم.

با تشکر، یا حق.