tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルVB2005でLZHを解凍
記事No10199
投稿日: 2010/08/24(Tue) 01:19
投稿者田淵
現在、VB2005を勉強中の身です。

是非教えて頂きたいのですが、VB2005でのLZHの解凍するにはどうしたらよいでしょうか?

サンプルは検索して見つけたのですが、このサンプルを「ボタン」を押したら動くようにしたいのですが、自分で理解していません。


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

***ここに、どのようなコードを書けば良いでしょうか?***

End Sub

初心者の質問ですみません。





参考サンプル

http://ameblo.jp/archive-redo-blog/entry-10033356249.html

http://natchan-develop.seesaa.net/article/143152634.html

[ツリー表示へ]
タイトルRe: VB2005でLZHを解凍
記事No10200
投稿日: 2010/08/24(Tue) 09:11
投稿者魔界の仮面弁士
> 是非教えて頂きたいのですが、VB2005でのLZHの解凍するにはどうしたらよいでしょうか?
unlha32.dll をダウンロードしてきて、それを使うのが簡単かと思います。

> http://ameblo.jp/archive-redo-blog/entry-10033356249.html
これは VB6 向けのコードなので、VB.NET への翻訳が必要になります。
コード中の As Long の箇所を As Integer に書き換えれば動作するはずですよ。

> http://natchan-develop.seesaa.net/article/143152634.html
こちらは VB.NET 向けのコードになっていますね。
あらかじめ、実行環境に Lhasa をインストールしておく必要があります。

> サンプルは検索して見つけたのですが、このサンプルを「ボタン」を押したら動くようにしたいのですが、自分で理解していません。
まず、サンプルの意味を理解する所からはじめて見て下さい。
サンプルを理解していないと、自分のコードに組み込む事もままならないでしょうし。

サンプルの中で、理解できていない所はどこですか?

[ツリー表示へ]
タイトルRe^2: VB2005でLZHを解凍
記事No10206
投稿日: 2010/08/24(Tue) 12:32
投稿者田淵
魔界の仮面弁士 様

返信有り難うございます。

初歩的な質問で申し訳ないのですが、「Sub=callで呼び出す」は勉強しました。

Functionを「Button1_Click・・・」の中で呼び出したい場合は、どうしたらよいでしょうか?

しかも、「http://ameblo.jp/archive-redo-blog/entry-10033356249.html」の場合は、Function、sub、Functionと3つのコードがあります。

この場合「Function Lha」を呼び出すという形になるのでしょうか?


Functionを呼び出す場合の、具体的なコードが分からないのです・・・・



ご返信頂けたら、大変有りがたいです。
よろしくお願いいたします。



> > サンプルは検索して見つけたのですが、このサンプルを「ボタン」を押したら動くようにしたいのですが、自分で理解していません。
> まず、サンプルの意味を理解する所からはじめて見て下さい。
> サンプルを理解していないと、自分のコードに組み込む事もままならないでしょうし。
>
> サンプルの中で、理解できていない所はどこですか?

   

[ツリー表示へ]
タイトルRe^3: VB2005でLZHを解凍
記事No10207
投稿日: 2010/08/24(Tue) 13:06
投稿者魔界の仮面弁士
> Functionを「Button1_Click・・・」の中で呼び出したい場合は、
> どうしたらよいでしょうか?
Sub と同じ方法で OK です。

> しかも、「http://ameblo.jp/archive-redo-blog/entry-10033356249.html」の場合は、
先述したように、それは VB.NET 向けのコードではありませんので、
現時点の知識レベルでは参考にしない方が良いでしょう。
VB.NET 用のサンプルを探してきた方が無難です。

[ツリー表示へ]
タイトルRe^4: VB2005でLZHを解凍
記事No10208
投稿日: 2010/08/24(Tue) 14:04
投稿者田淵
魔界の仮面弁士 様

返信有り難うございます。

しかし、当方勉強不足で分からない点が、もう1点あります。

callで、As intterger形式を呼び出す方法は勉強しましたが、As String形式を呼び出す場合はどうしたらよいでしょうか?
http://natchan-develop.seesaa.net/article/143152634.html

サンプルコードにあるようなDecompressionを呼び出す場合は、具体的にどうなるでしょうか?

今後、絶対に役に立ちそうなので、是非教えてください。



VB.NET用の、DOBONさんのサンプルを見つけたのですが、私には複雑でした。
それとも、As String形式のcallの仕方が分かれば、難しさは関係ないのでしょうか?
ただ呼び出すだけなので??
http://dobon.net/vb/dotnet/links/extractarchive.html


よろしくお願いいたします。



> > Functionを「Button1_Click・・・」の中で呼び出したい場合は、
> > どうしたらよいでしょうか?
> Sub と同じ方法で OK です。
>

[ツリー表示へ]
タイトルRe^5: VB2005でLZHを解凍
記事No10209
投稿日: 2010/08/24(Tue) 14:12
投稿者花ちゃん
下記を試して見て下さい。(コードを書いてしまっては勉強にならないのですが。)
但し、1行・1行 何をしているのか解析して下さい。
(Unlha の コマンド や スイッチ の意味も含めて)

Private Declare Function Unlha Lib "unlha32.dll" ( _
   ByVal hWindows As IntPtr, _
   ByVal CmdLine As String, _
   ByVal Console As String, _
   ByVal size As Integer) As Integer

Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click
   Dim strConsole As String
   Dim strCmdLine As String
   strConsole = New String(CChar(" "), 256)

   'c:\test.lzh ファイルをC:\test\ フォルダーへ解凍
   strCmdLine = "e " & "c:\test.lzh " & "C:\test\"
   Unlha(Me.Handle, strCmdLine, strConsole, 256)
End Sub

[ツリー表示へ]
タイトルRe^5: VB2005でLZHを解凍
記事No10210
投稿日: 2010/08/24(Tue) 14:30
投稿者魔界の仮面弁士
> callで、
メソッド(Sub/Function)の呼び出し時に Call を使うこともできますが、
Call ステートメントは省略できますし、多くの場合は記述されません。
たとえば、
 Call MsgBox("さんぷる")
と記述する代わりに、
 MsgBox("さんぷる")
と記述すれば済みます。


> As intterger形式を呼び出す方法は勉強しましたが、
intterger というのは、
Integer の事でしょうか?


> As String形式を呼び出す場合はどうしたらよいでしょうか?
整数値のかわりに文字列を渡してください。リテラルでも変数でも構いません。


> サンプルコードにあるようなDecompressionを呼び出す場合は、具体的にどうなるでしょうか?
第一引数に圧縮ファイル名、第二引数に解凍先ディレクトリを指定します。

たとえば、それぞれの値が sourceLzhPath、destinationDirectory という変数に
格納しているのなら、『Decompression(sourceLzhPath, destinationDirectory)』と
記述すれば良いですし、そのサイトのサンプルにあるように、
》1. C:\work\hoge.lzhを指定したフォルダ(例:C:\test)に解凍する場合
という条件であれば『Decompression("C:\work\hoge.lzh", "C:\test")』です。
あるいは、TextBox 等から入力された値を渡すようにしても良いでしょう。


> As String形式のcallの仕方が分かれば、難しさは関係ないのでしょうか?
比較対象がそもそも無関係ですよ。


たとえば、傘を置き忘れて、その事を電話で問い合わせるにあたり、
 『本屋に電話をかけた事はありましたが、駅にかけた事はありません。
  駅に電話をかけるのは難しいのでしょうか?』
という質問をされたら、
 「どこにかけようとも電話の使い方は基本的に同じです」
という答えがかえってきますよね。
もちろん、相手にあわせて話す内容は異なりますし、
繋ぐための電話番号も異なりますけれども。


それと同じで、たとえば
「Sub Sample1(ByVal i As Integer)」なメソッドであろうと
「Sub Sample2(ByVal s As String)」なメソッドであろうと、
呼び出し方そのものに違いがあるわけではありません。
もちろん、メソッドによって実行される処理は異なりますし、
引数に渡すべきデータも異なりますけれどね。

[ツリー表示へ]
タイトルRe^5: VB2005でLZHを解凍
記事No10212
投稿日: 2010/08/24(Tue) 16:21
投稿者田淵
花ちゃん様、魔界の仮面弁士様

ご教示有り難うございます。


花ちゃん様

コード実行しましたら、問題なく出来ました。
有り難うございます。

正直、コードの半分もまだ理解していませんが、「Declare Functionでunlha32.dllのUnlhaを使用するよ」、それを「Button1_Clickでコマンドを使って解凍するようにしている」との解釈で合っていますでしょうか?

具体的な解釈は、もう少し勉強する時間を下さい。
ひとつ知らないことが出てくると、悩みますね。
でも、みなさんそうやって勉強していってるのでしょうが・・・




魔界の仮面弁士様

具体的な説明有り難うございます。
callは省略出来るとの事は初めて知りました。
勉強で、いろいろなコードを見ましたが、気づかないだけで省略してあったコードもたくさん合ったのでしょうね。

>第一引数に圧縮ファイル名、第二引数に解凍先ディレクトリを指定します。

これも勉強になりました。

いままで、Integer形式なメソッドでの第一引数しか扱った事がありませんでした。
まだ勉強することがたくさんありますね。・・

[ツリー表示へ]