- PR -

VB6のファイル読み込みについて

投稿者投稿内容
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2006-01-04 21:43
VB6で言う所のMid関数の事言ってる?

strGetString = Mid(strDefaultString, lngStartPoint, lngEndPoit)
の事ですかね?
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-01-04 21:54
VB6.0における読み込み位置の指定は、Seekステートメントで行います。読み込みたい位置までSeekで移動した後、InputBステートメントを使えば済むはずです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-04 23:13
引用:

ヒロピンさんの書き込み (2006-01-04 21:12) より:

文字コードではなく文字列をそのまま取得するにはどうすれば良いのでしょうか。
ご教授お願い致します。


どちらでも可能だと思いますが...

コード:

    Private Sub Read1()
        Dim iFileNo As Integer
        iFileNo = FileSystem.FreeFile()

        Open "D:\MakiMakiLove.txt" For Input As #iFileNo

        ' Try 〜 Finally の代わり
        On Error GoTo Finally

        ' 4 バイト目から 8 バイトを読み込む
        Seek #iFileNo, 4

        Dim stBuffer As String
        stBuffer = InputB$(8, #iFileNo)

        Call MsgBox(StrConv(stBuffer, vbUnicode))

    Finally:
        Close #iFileNo
    End Sub

コード:

    Private Sub Read2()
        Dim iFileNo As Integer
        iFileNo = FileSystem.FreeFile()

        Open "D:\MakiMakiLove.txt" For Binary As #iFileNo

        ' Try 〜 Finally の代わり
        On Error GoTo Finally

        ' 4 バイト目から 8 バイトを読み込む
        Dim btBytes(8) As Byte
        Get #iFileNo, 4, btBytes()

        Call MsgBox(StrConv(btBytes(), vbUnicode))

    Finally:
        Close #iFileNo
    End Sub


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-01-05 14:05
引用:

コード:
        ' 4 バイト目から 8 バイトを読み込む
        Dim btBytes( As Byte
        Get #iFileNo, 4, btBytes()
        Call MsgBox(StrConv(stBuffer, vbUnicode))




#Option Baseによりますが
Dim btBytes(7) As Byte
のほうがよかったりして。。。

#StrConvはゼロを終端とみなすようですね。以降は切れてしまいました。
ヒロピン
常連さん
会議室デビュー日: 2003/12/14
投稿数: 35
投稿日時: 2006-01-05 14:30
じゃんぬねっとさん、るぱんさん、甕星さん、まどかさん回答ありがとうございます。

じゃんぬねっとさん、申し訳ありません。

Open ファイル For Input As #iFileNo の後に Len を指定していたのですが、
これをはずしたら正常に取得できました。

VBでプログラムを作るのは初めてなので、
多分また何かにつまずくと思いますが
そのときは宜しくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-05 15:31
引用:

まどかさんの書き込み (2006-01-05 14:05) より:

Dim btBytes(7) As Byte
のほうがよかったりして。。。


あはは、確かに「コメント」とは合致していませんね。

引用:

#StrConvはゼロを終端とみなすようですね。以降は切れてしまいました。


はい、私は終端ゼロがクセになっている人です。(^^)
バイナリを扱う場合は絶対にやるようにしています。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ヒロピン
常連さん
会議室デビュー日: 2003/12/14
投稿数: 35
投稿日時: 2006-01-05 20:38
いつもお世話になっております。

テキストファイルからファイルのPATHを読み込んで stBuffer にセットしました。
しかし、ファイルの存在チェックでエラーになってしまいます。

Dim strPath As String
strPath = StrConv(stBuffer, vbUnicode)

If FileExists(strPath) = False Then
  このif文に入ってしまいます。

MsgBox で strPath を出力すると正しく表示されます。

文字コードが何かおかしいのでしょうか。

ご教授お願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-05 20:59
引用:

ヒロピンさんの書き込み (2006-01-05 20:38) より:

テキストファイルからファイルのPATHを読み込んで stBuffer にセットしました。
しかし、ファイルの存在チェックでエラーになってしまいます。

If FileExists(strPath) = False Then
  このif文に入ってしまいます。


エラーというのは実行時エラーですか?
何と表示されていますか?

また、MsgBox などで表示などせず、式ウォッチで見るか、
イミディエイトへ出力して欲しいですね。

終端に NullChar が入っているだけのような気がしますが。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)