|
■No72157 (グリム さん) に返信
> No. 3バイト
> 名前 10バイト
>
> 1つのレコード13バイトで試しに作る所なのですが、
> レコードは13で固定です。
001AAAAAAAAAA002BBBBBBBBBB003あいうえお
のような感じにデータがはいっているのでしょうか?
>
> この場合も構造体の宣言は必要なのでしょうか。
>
>
> 変数に代入してループで出すやり方が分かりません。
>
> 出来たら noと名前を連結させて
> 一つのレコードの変数にまとめて入れたいです。
>
> 正式なコードではありませんが、例えますと
> Record1 = TextBox1 : TextBox2
>
> 個々の情報を連結して新たな変数にまとめ、
> Textに出すときは別々でというのは出来ますか?
>
>
> Record1に入ってる情報 001 あああ の二つ
>
> TextBox1 に 001
> TextBox2 に あああ
>
構造体でもクラスでも良いですが何らかのデータを纏めて
扱える型は作った方がよいかもしれません。DataTableを使用するという方法もあります。
一例です。
'サンプルデータの文字列形式
Dim Data = "001AAAAAAAAAA002BBBBBBBBBB003あいうえお"
'シフトJISエンコード用
Dim SJIS = Encoding.GetEncoding("Shift_Jis")
'実際に格納されているバイト列の作成
Dim bytData = SJIS.GetBytes(Data)
'ストリームを開く(ファイルから開くときはファイル用のストリームを使用)
Dim m As New MemoryStream(bytData)
'バイト列を読むためのもの
Dim rd As New BinaryReader(m)
'ストリームの最後までループ
Do While rd.PeekChar > 0
'1レコード分のバイト数を一気に読み込む
Dim RecBytes = rd.ReadBytes(13)
'各項目毎に文字列を取得
Dim No = SJIS.GetString(RecBytes, 0, 3)
Dim Name = SJIS.GetString(RecBytes, 3, 10)
'とりあえずConsoleに表示(ここで作成した構造体とかクラスの配列とかリストにデータを追加)
Console.WriteLine("{0}:{1}", No, Name)
Loop
rd.Close()
|