
WEBで見つけたVB6のサンプルコードをVB.NET用に書き直して
いるのですが、なんとか波線のエラーはなくなったものの
実行すると、思った結果が得られません。
正しい訂正方法を教えて頂きたいです。
サンプルコードは下記のサイトにありました。
http://vbnet.mvps.org/index.html?code/internet/f …
インターネットキャッシュに関するものです。
文字数の関係で全部は書けないのですが、現在は↓のようになっています。
その他の訂正箇所は
全部のAs Any を As Objectに変更していて、
ComboBoxのアイテムに数値が設定できないようなので、
Select Caseで判断するようにしています。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim numEntries As Long
Dim cacheType As Long
Select Case ComboBox1.SelectedIndex
Case Is = 0
cacheType = &H1S
Case Is = 1
cacheType = &H8S
Case Is = 2
cacheType = &H10S
Case Is = 3
cacheType = &H20S
Case Is = 4
cacheType = &H40S
Case Is = 5
cacheType = &H10000
Case Is = 6
cacheType = &H100000
Case Is = 7
cacheType = &H200000
Case Is = 8
cacheType = URLCACHE_FIND_DEFAULT_FILTER
End Select
Label1.Text = "Working ..."
Label1.Refresh()
ListBox1.Items.Clear()
ListBox1.Visible = False
numEntries = GetCacheURLList(cacheType)
ListBox1.Visible = True
Label1.Text = VB6.Format(numEntries, "###,###,###,##0") & "files found"
End Sub
Private Function GetCacheURLList(ByRef cacheType As Long) As Long
Dim ICEI As INTERNET_CACHE_ENTRY_INFO
Dim hFile As Long
Dim cachefile As String
Dim nCount As Long
Dim dwBuffer As Long
Dim pntrICE As Long
dwBuffer = 0
hFile = FindFirstUrlCacheEntry(vbNullString, 0, dwBuffer)
If (hFile = ERROR_CACHE_FIND_FAIL) And (Err.LastDllError = ERROR_INSUFFICIENT_BUFFER) Then
pntrICE = LocalAlloc(LMEM_FIXED, dwBuffer)
If pntrICE Then
CopyMemory(pntrICE, dwBuffer, 4)
hFile = FindFirstUrlCacheEntry(vbNullString, pntrICE, dwBuffer)
If hFile <> ERROR_CACHE_FIND_FAIL Then
Do
CopyMemory(ICEI, pntrICE, Len(ICEI))
If (ICEI.CacheEntryType And cacheType) Then
cachefile = GetStrFromPtrA(ICEI.lpszSourceUrlName)
ListBox1.Items.Add(cachefile)
nCount = nCount + 1
End If
Call LocalFree(pntrICE)
dwBuffer = 0
Call FindNextUrlCacheEntry(hFile, 0, dwBuffer)
pntrICE = LocalAlloc(LMEM_FIXED, dwBuffer)
CopyMemory(pntrICE, dwBuffer, 4)
Loop While FindNextUrlCacheEntry(hFile, pntrICE, dwBuffer)
End If
End If
End If
Call LocalFree(pntrICE)
Call FindCloseUrlCache(hFile)
GetCacheURLList = nCount
End Function
どうしてもここから分からないので、お助けいただきたいです。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
> ツールの中にあるVB6を自動で変換するという機能を使って
> 変換した際にLongが全部Integerになっていたので、
> 全部Longに戻してしまってあります。
つまり、
「APIを使用するとき、型を変更しないとかなりの確率で誤動作」するので、
親切にも直してくれた(LongをIntegerにしてくれた)のに、
貴方は、それを無効にしたって事です。
Integerにしてください。
ご回答ありがとうございます。
全部Integerに直しました。
変数の数値が変わって別のエラーが出たのでそれを調べて見たいと思います。
ありがとうございました。
No.1
- 回答日時:
> その他の訂正箇所は
> 全部のAs Any を As Objectに変更していて、
他はやっていないのでしょうか?
例えば、Long型からInteger型への修正とか・・・
#VB6のLong型は32ビット、Integer型は16ビットでしたが、
#VB.NETでは、Long型は64ビット、Integer型は32ビットなので、
#APIを使用するとき、型を変更しないとかなりの確率で誤動作しますけど・・・
この回答への補足
ご回答ありがとうございます。
ツールの中にあるVB6を自動で変換するという機能を使って
変換した際にLongが全部Integerになっていたので、
全部Longに戻してしまってあります。
現在は↓のようになっているので、ご覧頂けると幸いです。
http://www.geocities.jp/popopompom_oshiete_goo/i …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
PHPでXML→HTML
-
ふりがなをアルファベット化す...
-
VS 2008(VB.NET)
-
JIS → S-JIS コード変換するには
-
英数字を含む文字列(0-9,A-Z)...
-
char関数/code関数の多言語化に...
-
S-JIS → JIS コード変換するには
-
RubyでUTF8のコード値を文字に...
-
数値のパック10進数の変換に...
-
入力した文字を全て自動で全角...
-
「髙(はしごたか)」を文字コー...
-
文字列を数字に変換する暗号化方式
-
VB.NETのコンソールアプリケー...
-
漢字の振り仮名を取得したい
-
C#で16進数からASCIIへの変換の...
-
10進数→2進数への変換
-
std::stringからLPCWSTR型への変換
-
C++でEUC-JPをSJISに変換したい。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
std::stringからLPCWSTR型への変換
-
ふりがなをアルファベット化す...
-
「彡」って文字はなんという文...
-
VS 2008(VB.NET)
-
フォームのコントロールのバッ...
-
ExcelVBA実行後に時々落ちる
-
sedで日本語の置換方法について
-
COBOLによる全角・半角混...
-
Excelマクロにて30分単位の計算...
-
Symfowareでのデータ型変換につ...
-
2バイト文字をJEFからSJISに変...
-
「髙(はしごたか)」を文字コー...
-
S-JIS → JIS コード変換するには
-
%fと%gについて
-
PL/SQLでSJISの文字コードを取...
-
JIS → S-JIS コード変換するには
-
RubyでUTF8のコード値を文字に...
-
英数字を含む文字列(0-9,A-Z)...
おすすめ情報