掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VBでのファイルデータ取得について (ID:110949)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> C言語でいうChar配列のような定義方法をVBでは > どのように宣言すればよいのでしょうか。 C言語のChar配列、すなわち「文字の配列」は、他の言語においては、 「文字列」という概念で処理される事が多いです。 「文字列」としての意味であれば、 Dim S As String S = "ABCD" とだけ書けばOKです。 しかし何らかの理由で、「文字列」ではなく、Cのように「文字の配列」として 扱いたいならば、以下のようにします。 まず、VB.NET であれば、 Dim C() As Char のように定義します。Char型は、特定の1文字を表すデータ型です。 この変数に一括代入するなら、 C = New Char() {"A"c, "B"c, "C"c, "D"c} のように、一文字ずつ指定していくか、もしくは C = "ABCD".ToCharArray() のように、文字列(String型)のToCharArrayメソッドで変換します。 (もっとも、今回の質問文から察するに、.NETでは無さそうですけれども) VB6以下、あるいはVBAの場合は、C言語の Char に相当するデータ型は ありません。強いて言えば、固定長文字列型を使って、 Dim C() As String * 1 ReDim C(3) C(0) = "A" C(1) = "B" C(2) = "C" C(3) = "D" と書けば、C言語の Char に近いイメージになりますが、メリットは無いでしょう。 まぁ、APIを使うためには、C言語の char型(≠Char型)に相当する 「Byte型」の配列で代用する事はありますけれどね。 String型をByte型配列に変換する場合は、 Dim C1() As Byte C1 = "ABCD" もしくは、 Dim C2() As Byte C2 = StrConv("ABCD", vbFromUnicode) という形式を使います。 (前者はUnicode文字列、後者はShift_JIS文字列のバイトデータになります) > Dim str(8) As String ←??? > Open ファイル名 For Input As #ファイル番号 > Line Input #ファイル番号, ??? > Close #ファイル番号 Line Input #を使う場合は、「文字の配列」ではなく「文字列」にします。 つまり、 Dim S As String で宣言して、 Line Input #ファイル番号, S という感じですね。 > ファイルから取得したデータを指定バイト毎に切り分けて バイト単位ならば、(C言語の)Char ではなく、charなのでは? Charだとしたら、「文字単位」ですよね。 文字単位で扱いたいなら、Mid関数を使ってみて下さい。 C = Mid("ABCD", 1, 1) 'Cには "A" が入る。 C = Mid("ABCD", 2, 1) 'Cには "B" が入る。 C = Mid("ABCD", 3, 1) 'Cには "C" が入る。 バイト単位で扱いたいなら、先に記述した方法で、Stringデータを Byte配列に変換してみてください。あるいは、Open For Input ではなく、 Open For Binary を使えば、最初からByte配列にて得る事もできます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.