none
バイト配列について RRS feed

  • 質問

  • こんにちわ
    VB初心者なのですが、よろしくお願いします。

     ファイルをバイナリーでバイト配列に読み込み、読み込んだそのバイト配列のデータを編集(必要なデータの取り出し)してバイナリーファイルに書き込みたいのですが、読み込んだバイト配列を別のバイト配列に代入するやり方が分かりません。
    どなたか、ご教授 よろしくお願いいたします。

        Dim wsPath As String                                            ' フォルダ名の格納先
        Dim wsFileName As String                                        ' ファイル名の格納先
        Dim wsByteBmp As Byte()                                         ' BMPファイル用バイト格納
        Dim wiI As Integer                                              ' For文の添え字
        Dim wiI1 As Integer                                             ' For文の添え字
        Dim wiI2 As Integer                                             ' 編集後用の添え字
        Dim wiCnt As Integer                                            ' 行カウント
        Dim wiReadCnt As Integer                                        ' 読み込み開始位置用
        Dim wiBmpGyou As Integer                                         ' ビットマップの行数
        Dim wsBmpWork1 As String                                         ' 編集用
        Dim wsBmpWork2 As String                                         ' 編集用
        Dim wsBmpByte As Byte()

        wsByteBmp = My.Computer.FileSystem.ReadAllBytes(wsFileName)
        wiCnt = 1
        wiI2 = 0

        For wiI1 = 62 To wsByteBmp.Length - 1
            If wiCnt <= 15 Then
              wsBmpByte(wiI2) = wsByteBmp(wiI1)
              wiI2 = wiI2 + 1
              wiCnt = wiCnt + 1
            Else
              wiCnt = 1
            End If
          Next

      wsBmpByte(wiI2) = wsByteBmp(wiI1)でエラーになります。
     オブジェクト参照がオブジェクト インスタンスに設定されていません。
     何が悪いのかさっぱりです。

     初心者の質問で、申し訳ありませんがよろしくお願いいたします。

    2009年7月27日 6:07

回答

  • wsBmpByte の実体がないように思います。
    配列であることは宣言されていますけれども、実際の器がないような。
    ビルドをすると代入文に warning が出るのではないかと思うのですが。

    とりあえずは、

     ReDim wsBmpByte(wsByteBmp.Length)

    あたりを wiI2 の初期化近辺にいれるといいのではないでしょうか。(要素数の算出が面倒なので)
    • 回答としてマーク Kusina 2009年7月27日 7:36
    2009年7月27日 6:53

すべての返信

  • wsBmpByte の実体がないように思います。
    配列であることは宣言されていますけれども、実際の器がないような。
    ビルドをすると代入文に warning が出るのではないかと思うのですが。

    とりあえずは、

     ReDim wsBmpByte(wsByteBmp.Length)

    あたりを wiI2 の初期化近辺にいれるといいのではないでしょうか。(要素数の算出が面倒なので)
    • 回答としてマーク Kusina 2009年7月27日 7:36
    2009年7月27日 6:53
  • ありがとうございました。

    10年以上ぶりにVBで開発することになり、さまざまな違いとすっかりいろいろな事を忘れています。

    いわれてみれば、納得いきました。

    2009年7月27日 7:39