• ベストアンサー

VB.NETの配列

こんにちわ。 いまVB.NET2003で開発をしている者です。 たとえば画面で入力された最大400文字(800バイト)の テキストを50文字(100バイト)ずつに区切って, 配列に格納したいのですが, 関数など,効率の良い方法はあるでしょうか? 教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

No2さんの回答への補足(?)ですが、 System.Text.Encoding.Default.GetBytes 等でbyte数は取得できます。 半角全角混合でDBなどへの格納チェックする場合には良く使用されていると思います。

参考URL:
http://jeanne.wankuma.com/tips/string/lenb.html
tatsurou
質問者

お礼

mjsamiasanさん 回答ありがとうございます。 参考にさせて頂きます。

その他の回答 (2)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

.NETでは、文字列をバイトでは扱いません。 LENB等の文字列をバイト換算で処理する関数もありません。 すべてUnicode(UTF-16)で扱います。 ですから、400文字(=800バイト)と意識して使うことは危険です。 極端な話、Vistaも含めて考えると、漢字1文字が4バイトのものもでてきます。 というわけで、全部「文字」として扱うしかないので、 1文字目~50文字目 51文字目~100文字目 ・・・ というように、普通に文字列の長さ分を50文字ずつ分割すればよいのではないでしょうか。

tatsurou
質問者

お礼

PED02744さん 回答ありがとうございます。 参考にさせて頂きます。

  • kaz-5919
  • ベストアンサー率26% (45/170)
回答No.1

substringをforでまわせばどうですか? http://www.bcap.co.jp/hanafusa/dotnet/kan01_09.htm

tatsurou
質問者

お礼

kaz-5919さん 回答ありがとうございます。 参考にさせて頂きます。

関連するQ&A

  • VB2005 コントロール配列について教えていただけませんか?

    現在VB2005を用いてプログラムを行なっている初心者です。 ここのサイトでVB2005ではコントロール配列は使用できないことを知りました。そこで、例えばフォーム上にTextBoxを5個配置して、各TextBoxに入力された値を配列に格納するのにはどのようにすれば良いでしょうか? data(0) = textbox1.text data(1) = textbox2.textと一つずつやるしかないでしょうか・・・ For文などを用いて簡単にできる方法を教えてください。 よろしくお願い致します。

  • VB.NET2010 の多次元配列について

    すいません、教えてほしいです! VB.NET2010開発環境を利用しています。 多段配列を多次元配列に入れる方法を教えていただきたいです。 多段配列 Dim myArr1()() ↓ 多次元配列 Dim myArr2( , )

  • VB.netの配列とVB6の配列の違い

    VB6で画面を作成し、演算処理を行うDLLをVC6で作成しています。 下記のコードでVB6でSingle型の2次元配列を宣言しま、VCのDLLでエクスポートしている関数に渡 します。 VC6DLL側のコード---------- EXPORT void __stdcall TESTFUNC (float *pfData,long nSize{ } VB側のコード---------- 宣言 Declare Function TESTFUNC Lib "TEST.dll" (ByRef pfData As Single, ByVal nSize As Long) As Long 配列宣言 Public sngDat(999,1) as single 呼び出し TESTFUNC sngDat(0,0),1000 このように呼び出した場合、VC6のTESTFUNC にブレークポイントを設定し、停止するとpfDataの ポインタをインクリメントした場合、sngDat(0,0),sngDat(1,0),sngDat(2,0)と、1次元目の添え字を インクリメントした状態になるように、メモリに格納されています。 この動作を前提として、VB.net側でも同じように呼び出してみました。 VB.net側のコード---------- 宣言 Declare Function TESTFUNC Lib "TEST.dll" (ByRef pfData As Single, ByVal nSize As Integer) As Integer 配列宣言 Public sngDat(999,1) as single 呼び出し TESTFUNC(sngDat(0,0),1000) VC側は全く同じコードを利用するとします。 同じように、VC6のTESTFUNC にブレークポイントを設定し、停止するとpfDataの ポインタをインクリメントした場合、sngDat(0,0),sngDat(0,1),sngDat(1,0)と,sngDat(1,1)、と1次元目の添え字を インクリメントせず、2次元目の添え字をインクリメントした状態になるように、メモリに格納されています。 VB6→VC6のDLLの場合の配列渡しと、VB.net→VC6のDLLの場合の配列渡しで違いがあるのは 何故でしょうか?また、VB.net側の配列渡しの仕様を、VB6側の仕様に合わせる方法は無いのでしょうか? よろしくお願いいたします。

  • VB6で配列の最大値を簡単に求める。

    VB6で配列の最大値を簡単に求める方法はありますでしょうか? 今は、1番目と2番目を比較して、大きい方を変数に格納して、 変数と3番目を比較して、・・・・ 以下繰り返して、求めています。

  • vb2008 コントロール配列

    VB6からVB2008へ移行を検討しているものです。 そこで質問なんですが、VB2008でコントロールの反復処理はどう処理すればいいのでしょうか? VB6の時はコントロール配列を使用して、ForNextで繰り返せばそれらしいことはできました。VB2008はコントロール配列がサポートされていないのでどうすればいいかわかりません。みなさんはどう反復処理を行っているのか教えていただきたいと思います。 具体的な処理として、テキストボックス1~10があり、そのテキストボックスの内容を1~10の順番で、テキストボックス11~20に格納する。以上、宜しくお願いします。

  • バイナリデータの検索(VB.NET2008)

    バイナリファイルを読込み、バイト配列に格納しています。 aaa(0) = 0 aaa(1) = 90 aaa(2) = 0 aaa(3) = 255 aaa(4) = 255 aaa(5) = 0 aaa(6) = 255 この配列から、「FFFF」が見つかった位置を検索したいと考えています。 (上の例で言うと3を取得したい) 現在は配列の最初から最後まで1バイトずつずらして読込み、見つかった場所を特定しています。16進表記の文字列に変換し、文字列として検索する方法も考えましたが、どちらも非効率な気がしています。 他のやり方を知っている方がいましたら教えてください。 [環境] VB2008,XP32SP3

  • VB.netでの動的配列の扱い

    VB.net 2003で開発を行っています。 コード内で動的配列を多用しているんですが(要素数 2000000以上)、一度 ReDim でメモリ確保した配列は、いらなくなったと同時にErase したほうがいいんでしょうか。 配列を増やすほど実行速度が遅くなっていく気がします。 また、いっそのことVC++で書き直すと、実行速度は速くなる可能性はありますか。 VB.netのコードは、もちろん最適化のチェックをすべていれてあります。 どなたかご教授下さい。

  • VB.NETでテキストボックスをコントロール配列のように扱いたいんですが

    VB.NETではコントロール配列はサポートされていませんが、TextBox1~TextBox10を配列のように扱う方法はありますか?ちなみに、以下の方法ではエラーとなりました。 Controls("TextBox" & i).Text でTextの内容を取得しようとした よろしくお願いします。

  • VB.netでのPerlのような配列操作

    VB.net 2003 を使用してカンマ区切りのテキストファイルから データを読み込み、ソートや検索や絞込みをしたいと思っています。 Perlで記述する場合、SortやGrepでかなり自由な配列操作ができましたが、VB.netではGrepにあたるものが見当たりません。 データは1件ごとに暗号化したいので、XMLを使うのは現実的ではないのかなと考えます。 CSVを読み込み、インデックス的な配列を作成し ソート結果などに応じてテキストファイルから必要なデータを読む という事を行ないたいのですが、何かよい方法はありませんか? そもそも配列を使うこと自体ナンセンスなのでしょうか?

  • .net 2010VB配列TextBox貼り付ける

    初めて質問致します。 よろしくお願い致します。 超初心者レベルです。 VB6の時に、Formにテキストボックスやラベルなどを1つ貼り付け、それをコピーすると「配列にするか?」と聞かれていました。 今、.net 2010 VB でテキストボックス(ラベル)をコピーしても、配列にするかどうか聞いてくれません。 プログラム等ではなく、手動でFormに貼り付け時に、配列にする方法を教えて下さい。 (どのプロパティが、配列のインデックスなのかが分かりません。) <(__)>

専門家に質問してみよう