「トップページ/VB6/SAMPLE」の編集履歴(バックアップ)一覧はこちら
「トップページ/VB6/SAMPLE」(2011/04/06 (水) 13:59:21) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
|&big(){サンプルコード}|
#contents()
----
*空の配列
C#でいうところの、nullが入った状態のことである。
基本的にVB6では、空っぽの配列を作成することはできない。
しかし、偉大な先人達が、いくつかの方法を見つけている。
-null?を入れておく方法
VB6にはnullなどないので、それに変わる方法を使う。
いちおうmsdnにも記載されているらしいが、かなり裏技っぽい
'Variant型の空の配列を作る
Dim arr() As Variant
arr = Array()
'空っぽの判定
On Error Resume Next
If (UBound(arr)) Then
Debug.Print "配列は空っぽ"
End If
'String型の空の配列を作る
Dim StringArray() As String
StringArray = Split("")
'Byte型の空の配列を作る
Dim ByteArray() As Byte
ByteArray = ""
'Object型の空の配列を作る
Dim ObjectArray() As Object
Call IsArray(ObjectArray)
-APIを使う方法
Private Declare Function SafeArrayAllocDescriptor Lib "oleaut32" ( _
ByVal cDims As Long, ByRef ppsaOut() As Any) As Long
Private Declare Sub GetMem4 Lib "msvbvm60" ( _
ByVal ptr As Long, ByRef ret As Long)
-「常に目的のサイズ+1とし、サイズが1を空とみなす方法」
自分的には、読みやすさも考えて、これが好ましいと考える。
Dim arr() As Integer
ReDim arr(0)
'空っぽの判定(本当は要素数1である)
If (UBound(arr) = 0) Then
'...
End If
'要素数を5に変更(本当は要素数6になる)
ReDim arr(5)
'ループ処理(cntは0~4の値となる)
Dim cnt As Integer
For cnt = 0 To UBound(arr) - 1
'...
Next cnt
'末尾に要素を追加
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr) - 1) = 0
----
*ビット演算
-指定位置のバイトを取り出す
'source:取り出し元 / destination:取り出したデータ
Dim source as Long, destination as Long
'最下位バイトを取り出す dest = src & 0xff
destination = source And &HFF&
'2バイト目を取り出す dest = (src >> 8) & 0xff
destination = (source / &H100) And &HFF&
'3バイト目を取り出す dest = (src >> 16) & 0xff
destination = (source / &H10000) And &HFF&
'最下位バイトを取り出す dest = (src >> 24) & 0xff
destination = (source / &H1000000) And &HFF&
----
*ファイル
Dim fno as Integer, str As String
fno = FreeFile
Open "c:\sample.txt" For Input As #fno
Line Input #fno, str
Close #fno
|&big(){サンプルコード}|
#contents()
----
*自己再起動
If Not (0 = Shell(App.Path & "\" & App.EXEName)) Then End
----
*空の配列
C#でいうところの、nullが入った状態のことである。
基本的にVB6では、空っぽの配列を作成することはできない。
しかし、偉大な先人達が、いくつかの方法を見つけている。
-null?を入れておく方法
VB6にはnullなどないので、それに変わる方法を使う。
いちおうmsdnにも記載されているらしいが、かなり裏技っぽい
'Variant型の空の配列を作る
Dim arr() As Variant
arr = Array()
'空っぽの判定
On Error Resume Next
If (UBound(arr)) Then
Debug.Print "配列は空っぽ"
End If
'String型の空の配列を作る
Dim StringArray() As String
StringArray = Split("")
'Byte型の空の配列を作る
Dim ByteArray() As Byte
ByteArray = ""
'Object型の空の配列を作る
Dim ObjectArray() As Object
Call IsArray(ObjectArray)
-APIを使う方法
Private Declare Function SafeArrayAllocDescriptor Lib "oleaut32" ( _
ByVal cDims As Long, ByRef ppsaOut() As Any) As Long
Private Declare Sub GetMem4 Lib "msvbvm60" ( _
ByVal ptr As Long, ByRef ret As Long)
-「常に目的のサイズ+1とし、サイズが1を空とみなす方法」
自分的には、読みやすさも考えて、これが好ましいと考える。
Dim arr() As Integer
ReDim arr(0)
'空っぽの判定(本当は要素数1である)
If (UBound(arr) = 0) Then
'...
End If
'要素数を5に変更(本当は要素数6になる)
ReDim arr(5)
'ループ処理(cntは0~4の値となる)
Dim cnt As Integer
For cnt = 0 To UBound(arr) - 1
'...
Next cnt
'末尾に要素を追加
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr) - 1) = 0
----
*ビット演算
-指定位置のバイトを取り出す
'source:取り出し元 / destination:取り出したデータ
Dim source as Long, destination as Long
'最下位バイトを取り出す dest = src & 0xff
destination = source And &HFF&
'2バイト目を取り出す dest = (src >> 8) & 0xff
destination = (source / &H100) And &HFF&
'3バイト目を取り出す dest = (src >> 16) & 0xff
destination = (source / &H10000) And &HFF&
'最下位バイトを取り出す dest = (src >> 24) & 0xff
destination = (source / &H1000000) And &HFF&
----
*ファイル
Dim fno as Integer, str As String
fno = FreeFile
Open "c:\sample.txt" For Input As #fno
Line Input #fno, str
Close #fno