VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/07/20(Wed) 21:21
投稿者ガッ
Eメール
URL
タイトルRe^2: 型を一致させたい

> Byte型にキャストしましょ
>
> Buffer(i) = MidB(Text1.Text, i - 11, 1)
>  ↓
> Buffer(i) = CByte(MidB(Text1.Text, i - 11, 1))
>
> #激しく誤爆...
(・∀・)ニヤ
でも、運がよければ例外起こりませんからねぇ…
というわけで、質問内容で隠されてる部分が結構重要だったりw

> >※少し気になるところ→なんでMidB()を使っているの?
> おそらくByte型の値域を超えるから?
かなぁ…MidB()はStringの一部を切り出してStringを返すから、B
yte型の値域を越えるとも考えられるけど、そもそも型が…
( ゜д゜)ハッ!
 ココで「型が一致しない」という疑問になって、
 「じゃぁ型を一致させればいいじゃん♪」
となったのかな…?(orz
→「信号赤じゃん進めないよー…」、「緑に塗っちゃえ♪」的なw;

> チロルさん
前も型の不一致で苦労なされているようですね。
ココは一つ出血大サービスを |ω・`) ?

-Module1.bas-
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (Destination As Any, Source As Any, ByVal Length As Long)

'buf()のLBound(buf)+offset位置にvを書き込む
'例外処理はしていないので良く見て運転してください(?
Public Sub WriteBytes(ByRef buf() As Byte, ByRef v() As Byte, Optional ByRef offset As Long)
    '※注意:bufにvの全てを書き込みます。
    Dim cnt             As Long
    cnt = UBound(v) - LBound(v) + 1
    CopyMemory buf(LBound(buf) + offset), v(LBound(v)), cnt
    offset = offset + cnt
End Sub
Public Sub WriteInteger(ByRef buf() As Byte, ByVal v As Integer, Optional ByRef offset As
Long)
    CopyMemory buf(LBound(buf) + offset), v, 2
    offset = offset + 2
End Sub
Public Sub WriteLong(ByRef buf() As Byte, ByVal v As Long, Optional ByRef offset As Long)
    CopyMemory buf(LBound(buf) + offset), v, 4
    offset = offset + 4
End Sub
'他は略。

'16進数で書かれたString→Byte()
Public Function HexTOBytes(ByRef INstring As String) As Byte()
    
    'INStringは"00 01 02 ff"などという文字列
    'その文字列を" "で区切り、
    '各々の元を16進数として評価して、配列として返す
    
    Dim v               As Variant
    Dim cnt             As Long
    Dim spl()           As String
    Dim ret()           As Byte
    
    '代入していく
    spl = Split(INstring, " ")
    ReDim ret(1 To UBound(spl) - LBound(spl) + 1)
    cnt = 0
    For Each v In spl
        cnt = cnt + 1
        ret(cnt) = Val("&h" & v)
    Next
    
    '戻る
    HexTOBytes = ret
    
End Function

※動くかな…長くなってすみません;
 ノシ


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -