Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


51289 / 76732 ←次へ | 前へ→

【30314】Re:Byte型について
発言  でれすけ  - 05/10/25(火) 9:45 -

引用なし
パスワード
   おはようございます。

>「filenumber」を「1〜511の範囲で任意のファイル番号を指定する」部分で、
>Byte型が関わってくるんですね。
違います。

>バイト単位での処理かどうかの判断は、
>Openステートメントのようにヘルプに書いてあれば…という認識でいいのでしょうか。
違います。
自分が作るマクロの目的によって、バイト単位にで処理する必要があるときに
バイト型を使用するということです。

>型宣言のときに()をつけるのはどのような役割があるのでしょうか。
>その上で、2行目は何が行われているのでしょうか。
型宣言時に、変数名に()を付ける場合、配列になります。
 配列の大きさを指定していない場合、動的配列になり、
 後で、Redimステートメントで大きさを指定します。

>その上で、2行目は何が行われているのでしょうか。
配列の大きさ(配列要素の数)を指定しています。

バッファサイズを1024バイト(bufsize=1024)とするとき、
バッファをByte型で宣言している時
Redim buf(bufsize-1)  ' つまり Redim buf ( 0 to 1023)
1バイト×1024要素で1024バイトのバッファが確保されます。

バッファがInteger型で宣言しているとき
Redim buf(bufsize \ 2 -1 )  ' つまり Redim buf ( 0 to 511 )
で2バイト×512要素で1024バイトのバッファが確保されます。

このマクロはファイルを1024バイトづつに区切って
読み込みと書き出しを繰り返しています。
で、最後に例えば3バイト残ったとすると、

Byte型のバッファであれば、ちょうと3バイト分のバッファを確保できます。
 (Rdim Buf(bufsize-1) で 変数bufsizeの値が3だから)
ところが、Integer型だと、バッファサイズを
 Redim buf(bufsize \ 2 -1 )
で確保しているとので、変数bufsizeの値が3だと bufsize \ 2 -1 = 0 ですから
 Redim buf( 0 to 0 )
となって、2バイト×1要素=2バイトのバッファサイズしか確保できないことになります。
なので、
If bufsize Mod 2 = 1 Then bufsize = bufsize + 1
で、bufsizeが3の様な奇数のときは、バッファを多めに確保するように調整します。
Mod演算子は、割り算のあまりを計算する演算子です。
bufsize Mod 2 = 1は、bufsizeを2で割った余りが1
ということです。

>「Get」「Put」でヒットしません。
Openステートメントからたどって下さい。

疑問点に答えることが出来たでしょうか。

1 hits

【30205】このコードは高速化可能か ken 05/10/21(金) 16:34 質問
【30207】Re:このコードは高速化可能か 角田 05/10/21(金) 17:42 回答
【30208】Re:このコードは高速化可能か ken 05/10/21(金) 18:23 質問
【30209】Re:このコードは高速化可能か 角田 05/10/21(金) 18:50 回答
【30210】Re:このコードは高速化可能か ken 05/10/21(金) 19:02 お礼
【30254】Byte型について わさび 05/10/24(月) 8:34 質問
【30280】Re:Byte型について 小僧 05/10/24(月) 13:15 発言
【30293】Re:Byte型について でれすけ 05/10/24(月) 16:48 発言
【30299】Re:Byte型について わさび 05/10/24(月) 18:44 質問
【30301】Re:Byte型について 参加 ichinose 05/10/24(月) 19:49 発言
【30355】Re:Byte型について 参加 わさび 05/10/25(火) 18:24 お礼
【30359】Re:Byte型について 参加 ichinose 05/10/25(火) 19:23 発言
【30368】Re:Byte型について 参加 わさび 05/10/26(水) 8:30 お礼
【30314】Re:Byte型について でれすけ 05/10/25(火) 9:45 発言
【30358】Re:Byte型について わさび 05/10/25(火) 19:04 お礼

51289 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free