入門口座 第11回 卒業制作について への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 マックス  (社会人) 投稿日時 2017/8/28 18:45:03
>エラー発生時に、「Value」にどのような値が入っていたのかを確認してみてください。 

魔界の仮面弁士様
さっそくの回答ありがとうございます。

エラーの発生時には
      「Value」の値は →"????" & vbNullChar & ChrW(16) & "JFIF" & vbNullChar …
となりました。

管理人さんの解説をよく読むと『必ず「保」ボタンで作成したファイルを選択するようにしてください』とありました。エラーが出たのは、「保」ボタンで作成したファイルを選択しなかった場合で、その場合に異常終了しました。

『「保」ボタンで作成したファイル』を選択すると正常に読めました。適切な回答、ありがとうございました。

エラー処理についてもこれから研究して、このソフトを自分なりに完成させたいと思います。今後ともアドバイスよろしくお願いいたします。

マックス







投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/8/28 11:23:24
> パスに無効な文字が含まれています。
> lstFileName.Items.Add(IO.Path.GetFileName(Value)) '←ここで例外処理がでる。

エラー発生時に、「Value」にどのような値が入っていたのかを確認してみてください。
投稿者 マックス  (社会人) 投稿日時 2017/8/27 22:03:49
半年ほど前からVB.NETを勉強するために、「VB中学校の入門講座」を見させていただいております。最近、「VB中学校 入門講座第11回 卒業制作」のファイルビューワーの製作に挑戦させていただき、Visual Studio 2015(Community)で製作しているのですが、「3-4-4.ファイル一覧を読み込めるようにする」のコードで躓きました。

もとより「B.NET2002対応  VB.NET2003対応  VB2005対応」なので、VB2015には対応していないとは思うのですが、回避するアドバイスがあればぜひご教授ください。エラーがでたコードは以下です。

■リスト6
Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click
    Dim Dialog As New OpenFileDialog
    If Dialog.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
        Dim Value As String
        Dim Reader As New IO.StreamReader(Dialog.FileName)
        FullPaths.Clear()
        lstFileName.Items.Clear()
        Do
            Value = Reader.ReadLine
            If Value Is Nothing Then
                Exit Do
            Else
                FullPaths.Add(Value)
                lstFileName.Items.Add(IO.Path.GetFileName(Value)) '←ここで例外処理がでる。
            End If
        Loop
        Reader.Close()
    End If
End Sub

● 「lstFileName.Items.Add(IO.Path.GetFileName(Value))」のところで、『型 'System.ArgumentException' のハンドルされていない例外が mscorlib.dll で発生しました。追加情報:パスに無効な文字が含まれています。』という例外が出ました。

なんせ、初心者でもありネットをいろいろ検索しているのですが解決出来ません。おわかりになる方がいましたらぜひアドバイスをいただけませんでしょうか。

マックス