トップページ⇒tech
4コメント3KB

VB5:ファイル出力に関する初心質問

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
VB5を覚えはじめて間も無い者です。ファイル出力でどうしても
わからないことがでてきました。アドバイスいただければ幸いです。
長文なので多分全文表示できてないでしょう。ご迷惑をお掛けし
て申し訳ないです。

コードはこんな感じです


------------------------------------------------------------
Dim head As String ;;(general_declarationsの部分で)
Dim bnry As String

:
:

fvol = FileLen( pf1 & File1.FileName )
head = Left(bnry@` 512)
bnry = Right(bnry@` fvol - 512)

:
:

Debug.Print "hは" & Len(head)
Debug.Print "cは" & Len(bnry)

Open (pf2 & hd_name) For Binary Access Write As #1
Put #1@` 1@` head
Close #1

Open (pf3 & ct_name) For Binary Access Write As #1
Put #1@` 1@` bnry
Close #1
Debug.Print "もう一度cは" & Len(bnry)
-------------------------------------------------------------

file1.filename で指定されるファイルは 例えば262656(= 262144 + 512)
バイトのものにします。イミディエイトウィンドウには

512
262144
262144

が表示されます。そしてファイル作成する段になると、hd_nameで指定される
ファイルは512バイトで問題ないです。しかしなぜかct_name で指定されるも
のは 294912バイト(32768バイト多い!) なんです。

さらに別のファイルで試してみました。同じく262656バイトですが、これが
303104バイトになってしまう。わけわかりません。

どちらも余剰分はすべて 00hで埋まってました。どういうことが起きています
でしょうか。
0002名無しさん@お腹いっぱい。NGNG
ところが、だ。スレッドの最初の発言に関しては、
長くても省略されずに表示されちゃうんだな。
1にソースを貼り付けるな、ってのは、そういうことなんだよ。
00031NGNG
先ほどのファイルサイズ、クラスタギャップ込みのものでした。
ちと寝ぼけてました。すいません。いずれにせよ、相当ファイル
サイズが違っていますので。

こんなソースで別に試してみました。

---------------------------------------------------------------------------
Private Sub File_S_DblClick()

Dim bnry As String

fp = File_S.Path
If Right(fp@` 1) <> "\" Then fp = fp & "\"

fvol = FileLen(fp & File_S.filename)
bnry = String$(fvol@` 0)

Open (fp & File_S.filename) For Binary Access Read As #1
Get #1@` 1@` bnry
Close #1

Open ("c:\windows\デスクトップ\zikken\" & File_S.filename) For Binary Access Write As #1
Put #1@` 1@` bnry
Close #1

End Sub
----------------------------------------------------------------------------

ことごとく違うサイズで作成されました。参りました。
00041NGNG
解決しました。というより別の方法が見つかりました。
どうもです。
■ このスレッドは過去ログ倉庫に格納されています