お世話になっております。
Windows8,DelphiXE2です。
.gz ファイルを解凍するには、どうしたらよいでしょうか。
Mr.XRAYさんのサイト
http://mrxray.on.coocan.jp/Delphi/plSamples/730_AutoDLDefrose.htm
とかを拝見しましたが、方法が分かりませんでした。
よろしくお願いします。
Googleで「delphi gz」「delphi gzip」等で検索すると、
上位の検索結果にはほぼ全部解決方法が書かれていますが、
ちゃんとご自分で一度調べたんでしょうか?
調べた上で分からないのであれば、具体的に何が分からないんでしょう?
ありがとうございます。
調べ方が甘いようで、すみません。
とりあえず、自分でやってみたことを書きます。
-------------
c:\test フォルダに、gz形式の圧縮ファイル file.gz を置く。
usesにSystem.Zipを追加する。
フォームにbutton1を置く。
procedure TForm1.Button1Click(Sender: TObject);
begin
TZipFile.ExtractZipFile('c:\test\file.gz', IncludeTrailingPathDelimiter('c:\test\file'));
end;
この状態で、プログラムを実行して、Button1をクリックすると、
「zipファイルを読み取る際にエラーが発生しました。」
というエラーが発生します。
教えていただいたページを見てみたんですが、英語の力や、圧縮、解凍について、あまり知識がないので、ここまでしか試すことができませんでした。
すみません。
根本的な誤解をされているようですが、gzipとzipは別物です。
TZipFileはzip形式用のクラスですので使えません。
ページについては苦手意識が先行してほとんど内容を見てないんじゃないでしょうか。
英語が分からなくても、記述されてるクラス名や関数名は分かると思いますし、
解凍用のコードがそのまま貼られているサイトもあるんですけどね。
設定で日本語の結果だけ表示したり、そこに「解凍」のワードを足せば日本語の解説も出てきます。
ここで質問するのも良いですが、効率的な検索を見につけられた方が良い気がします。
検索エンジンの使い方を勉強するために参考書の購入等をされれば、
ご自身で解決できる問題がかなり増えるんじゃないでしょうか。
その方が解決までのスピードも速いです。
ちなみに、かんとくさんのリンクしたページはどちらかというとファイルのダウンロードに主眼を置いたものなので
解凍処理の参考にするなら、その次のページを見た方がいいんじゃないでしょうか。
731_UNHLA32.DLL を使用したファイルの圧縮・解凍
http://mrxray.on.coocan.jp/Delphi/plSamples/731_ArchiverUNLHA32.htm
このページ自体はLZH形式が対象ですが、参考リンクに載せてある情報をたどってみると
・TAR32.DLLがgzに対応している(「統合アーカイバプロジェクト」の対応DLL一覧より)
http://www.csdinc.co.jp/archiver/lib/tar32.html
・これをDelphiから扱うコードもMr.XRAYさんが公開している
742_Tar32.dll を使用したファイルの圧縮・解凍
http://mrxray.on.coocan.jp/Delphi/plSamples/742_tar32dll_Test.htm
ことがわかります。これだったらすぐに使えそうですね!
(コードがいっぱいあって難しそうに見えますが、単に解凍目的なら1番目のコードだけ見ればいいです)
いろいろと、ありがとうございました。
教えていただいた、
TAR32.DLLと、Mr.XRAYさんのサイトの情報で、gzファイルを解凍することができました。
ご指摘の通り、英語に対する苦手意識と圧縮解凍に関する知識不足で、せっかく教えていただいたいろんなサイトをじっくり見ずに、簡単にあきらめてしまって、教えていただいた方には不快な思いをさせてしまったかもしれません。
すみませんでした。
これからは、なるべく自分で解決できるように努力します。
でも、このサイトがあって、本当によかったです。
ありがとうございました。