ページ 11

解凍・圧縮ソフトを作れるんでしょうか?

Posted: 2006年5月07日(日) 11:36
by gest
きっと無理だと思うんですけれどドラッグ&ドロップで解凍圧縮できるソフトは作れるんでしょうか?

返信@yu0627

Posted: 2006年5月07日(日) 11:54
by yu0627
 やったことないですが、出来ます。
ドラッグ&ドロップすると、コマンドラインでD&Dしたファイルのパスが送られてきます。
それをつかまえてやればいいです。
また、解凍圧縮には、各種DLLがこの世の中にありますので、それを使う定義をしてやればいいと思います。
参考:http://www.madobe.net/archiver/index.html

Posted: 2006年5月07日(日) 11:55
by C1000
hiraさんが"OrangeArchiver"という圧縮・解凍ソフトを作っています。
(ドラック&ドロップについてはわかりません。)
なので技術があれば作れます。

Re: 解凍・圧縮ソフトを作れるんでしょうか?

Posted: 2006年5月07日(日) 20:51
by 7
> きっと無理だと思うんですけれどドラッグ&ドロップで解凍圧縮できるソフトは作れるんでしょうか?
基本的にプログラミング出来ない物はないと思います。
ドラッグ&ドロップでファイルの取得+解凍(圧縮)処理=ドラッグ&ドロップで解凍圧縮できるソフト、になります。
物理的に不可能(パソコンに朝ごはんを用意してもらうとか)なこととか、必要な関数が非公開などの理由でプログラミングできない物もありますけどね。

以前何かの本で圧縮についてすごく初歩的で簡単なレクチャーがあったんですけど、例えば "aaaaaaaaaa" という10バイトのファイルがあるとします。

これを圧縮する場合、何の文字が何バイト並んでいるかだけを記録したファイルを作ります。これが圧縮されたファイルになります。
で、そのファイルの内容は "a" が 10個並んでるので "a10" となり、10バイトから3バイトに圧縮されました。

で、解凍は何の文字が何バイト並んでるのか解析します。
圧縮ファイルを開き "a10" を、aが10個並んでると解析し、 "aaaaaaaaaa" と変換しその内容を持つファイルを作ります。これが解凍されたファイルになります。

説明が下手糞なもんでよく分からないかもしれませんけど...。
また、圧縮・解凍の仕組みを説明してるようなものなので圧縮率は問題になりません。
"111" を圧縮すると "13" になってしまい違う意味になってしまうとか...。

巷の圧縮技術はどんなアルゴリズムなんでしょうかね...想像も付きません。

Re: 解凍・圧縮ソフトを作れるんでしょうか?

Posted: 2006年5月08日(月) 13:44
by MML
こんにちは。ゆちボンです。
gestさんから変身したいと思います。
> きっと無理だと思うんですけれどドラッグ&ドロップで解凍圧縮できるソフトは作れるんでしょうか?
Micco氏作の「Unlha32.dll」を使えば「LZH」形式の
圧縮解凍ができます。

7さんへ返信です
> 以前何かの本で圧縮についてすごく初歩的で簡単なレクチャーがあったんですけど、例えば "aaaaaaaaaa" という10バイトのファイルがあるとします。
> これを圧縮する場合、何の文字が何バイト並んでいるかだけを記録したファイルを作ります。これが圧縮されたファイルになります。
> で、そのファイルの内容は "a" が 10個並んでるので "a10" となり、10バイトから3バイトに圧縮されました。
>
> で、解凍は何の文字が何バイト並んでるのか解析します。
> 圧縮ファイルを開き "a10" を、aが10個並んでると解析し、 "aaaaaaaaaa" と変換しその内容を持つファイルを作ります。これが解凍されたファイルになります。
>
> 説明が下手糞なもんでよく分からないかもしれませんけど...。
> また、圧縮・解凍の仕組みを説明してるようなものなので圧縮率は問題になりません。
> "111" を圧縮すると "13" になってしまい違う意味になってしまうとか...。
> 巷の圧縮技術はどんなアルゴリズムなんでしょうかね...想像も付きません。
16進数(それ以上もアリ)の変換を使うと楽じゃないですか?

「255,255,255」という文字があったとします。
255を16進数変換すると「FF」になりますよね。
若干は圧縮されましたが、これが10万個あったとすると
若干軽くなる気がします。
そんな初歩的な圧縮+ZIPなどの本格的な圧縮を加えれば
結構圧縮できると思いますが。

返信@yu0627

Posted: 2006年5月08日(月) 20:58
by yu0627
以前何かの本で圧縮についてすごく初歩的で簡単なレクチャーがあったんですけど、例えば "aaaaaaaaaa" という10バイトのファイルがあるとします。

これを圧縮する場合、何の文字が何バイト並んでいるかだけを記録したファイルを作ります。これが圧縮されたファイルになります。
で、そのファイルの内容は "a" が 10個並んでるので "a10" となり、10バイトから3バイトに圧縮されました。
 工業高校の情報基礎の教科書によると、それは「ランレングス法」なるものらしいです。

 あのアーカイバのソース、ざぁーと見てみました。わけ分かりませんorz
「VirtualAlloc」と「VirtualFree」がかなりでていますが。
ビットシフトもあります。解析不能でした…。