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

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
gest

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

#1 投稿記事 by gest »

きっと無理だと思うんですけれどドラッグ&ドロップで解凍圧縮できるソフトは作れるんでしょうか?
yu0627
記事: 154
登録日時: 2005年5月31日(火) 14:53

返信@yu0627

#2 投稿記事 by yu0627 »

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

#3 投稿記事 by C1000 »

hiraさんが"OrangeArchiver"という圧縮・解凍ソフトを作っています。
(ドラック&ドロップについてはわかりません。)
なので技術があれば作れます。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

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

#4 投稿記事 by 7 »

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

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

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

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

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

巷の圧縮技術はどんなアルゴリズムなんでしょうかね...想像も付きません。
MML
記事: 154
登録日時: 2006年5月02日(火) 16:27

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

#5 投稿記事 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
記事: 154
登録日時: 2005年5月31日(火) 14:53

返信@yu0627

#6 投稿記事 by yu0627 »

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

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

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