VB2005からUNLHAを使用してファイルの圧縮を行いたいと思ってます。
UNLHA32.DLLのインストールを済ませて、以下のようなコードで実行しようと
したところ、「PInvokeStackImbalanceが検出されました。」のアラートが
表示されて処理が中断してしまいます。
いったい何が原因でどのように対処すれば良いのかご指導いただけないでしょ
うか?
Declare Function Unlha Lib "UNLHA32.DLL" (ByVal hWnd As Long, _
ByVal szCmdLine As String, _
ByVal Lpstr As String, _
ByVal wsize As Long) As Integer
Private Sub lhaTest()
Dim rcd As Integer
rcd = Unlha(0&, "a c:\ttt c:\test\*.*", vbNullString, 0)
End Sub
最終的な成果物としてファイルが圧縮できれば良いので、もっと初心者向けの
ファイル圧縮の方法がありましたら教えていただきたいと思います。
よろしくお願いします。
> 「PInvokeStackImbalanceが検出されました。」
> 何が原因でどのように対処すれば良いのか
原因は、DLL宣言の「引数の個数やデータ型が間違っている」所為です。
具体的には「Long型」が間違いです。
上記のプログラムは、どこからもって来ました?
その出所は、VB6とかを対象としたものではありませんか?
VB2005では、旧VB(VB6)とかと、データ型が変更になっています。
例えば
VB2005のInteger型は、VB6のLong型と同じです。
VB6用のプログラムで「Long型」が指定されている箇所は、VB2005では「Integer型」に変更しなければなりません。
> もっと初心者向けの
> ファイル圧縮の方法がありましたら教えていただきたいと思います。
VB2005なら、
「圧縮のアプリケーション サンプル 」
(http://msdn2.microsoft.com/ja-jp/library/ywf6dxhx(VS.80).aspx)
とか・・・
大吉末吉様
ご返答ありがとうございます。
Declare Function 宣言のLong型をInteger型に修正することで、
正常に圧縮処理を行えました。
また、お教えいただきました「圧縮のアプリケーションサンプル」も
参考にして、どちらか使い勝手の良い方でコーディングを進めて行き
たいと思います。
ツイート | ![]() |