Excel VBA質問箱 IV

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

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


51310 / 76732 ←次へ | 前へ→

【30293】Re:Byte型について
発言  でれすけ  - 05/10/24(月) 16:48 -

引用なし
パスワード
   こんにちは。

▼小僧 さん:
>Byte 型の変数をInteger型で宣言すると、実行してもエラーは起きませんが
>作成されるファイルが開けなくなってしまいます。
揚げ足をとるようでもうしわけありませんが、補足させてください。

問題はByte型のサイズは1バイトで、Integer型は2バイトだということです。

今回の事例は、BianryモードげGetしてそのままPutするわけで、
その意味ではInteger型でも問題はありません。

Integer型を使う2バイト単位で処理するので、
ファイルサイズが奇数バイトのときに対応できないことになります。
「バイト単位で処理するときはByte型」です。

Byte型は0〜255までの正の整数しか表現できないので、
他にはあまり使い道は多くありません。

現在のPCでは、それくらいのメモリをケチってもしょうがないですし、
32bitCPUというのは、32bit単位で処理する時が一番速度が出るもんだと
おもいますし。たぶん。

Sub sample()

Const maxbufsize As Long = 1024
Dim buf() As Integer
Dim filelen As Long, bufsize As Long
Dim FilenameR As String, FilenameW As String
Dim fnR As Integer, fnW As Integer
Dim i As Integer

FilenameR = Application.GetOpenFilename("*.pdf,*.pdf,*.xls,*.xls,*.doc,*.doc,*.txt,*.txt", 1, "コピーするファイルを指定してください。")
If FilenameR = "False" Then Exit Sub

i = InStrRev(FilenameR, "\")
FilenameW = Left(FilenameR, i) & "コピー" & Mid(FilenameR, i + 1)

fnR = FreeFile
Open FilenameR For Binary As fnR
fnW = FreeFile
Open FilenameW For Binary As fnW
filelen = LOF(fnR)

Do While filelen > 0
 If filelen < maxbufsize Then
   bufsize = filelen
   If bufsize Mod 2 = 1 Then bufsize = bufsize + 1
   '最後の1バイトをおとさないように。 このとき、よけいな1バイトが付加される
 Else
   bufsize = maxbufsize
 End If
' ReDim buf(bufsize - 1)    'Byte型のとき
 ReDim buf(bufsize \ 2 - 1)  'Ineger型のとき
 Get fnR, , buf
 Put fnW, , buf
 filelen = filelen - bufsize
Loop
Close
End Sub

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 お礼

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