2016-08-17 8 views
-3

Visual Basic에서 사용하고 디버그하여 사진을 찾을 때 YouTube에 코드가 있습니다. 그러나 소프트웨어를 저장하려고 할 때이 메시지가 나타납니다 here.VB.NET을 사용하여 웹 사이트에서 사진을 긁어 내리는 동안 사진 저장

Private Sub btnSaveImages_Click(ByVal sender As _ 
    System.Object, ByVal e As System.EventArgs) Handles _ 
    btnSaveImages.Click 
    Dim dir_name As String = txtDirectory.Text 
    If Not dir_name.EndsWith("\") Then dir_name &= "\" 

    For Each pic As PictureBox In flpPictures.Controls 
     Dim bm As Bitmap = pic.Image 
     Dim filename As String = pic.Tag 
     filename = _ 
      filename.Substring(filename.LastIndexOf("/") + _ 
      1) 
     Dim ext As String = _ 
      filename.Substring(filename.LastIndexOf(".")) 
     Dim full_name As String = dir_name & filename 

     Select Case ext 
      Case ".bmp" 
       bm.Save(full_name, Imaging.ImageFormat.Bmp) 
      Case ".gif" 
       bm.Save(full_name, Imaging.ImageFormat.Gif) 
      Case ".jpg", "jpeg" 
       bm.Save(full_name, Imaging.ImageFormat.Jpeg) 
      Case ".png" 
       bm.Save(full_name, Imaging.ImageFormat.Png) 
      Case ".tiff" 
       bm.Save(full_name, Imaging.ImageFormat.Tiff) 
      Case Else 
       MessageBox.Show(_ 
        "Unknown file type " & ext & _ 
        " in file " & filename, _ 
        "Unknown File Type", _ 
        MessageBoxButtons.OK, _ 
        MessageBoxIcon.Error) 
     End Select 
    Next pic 

    Beep() 
End Sub 
+1

당신이 전달하고 그것은 당신을 말하고으로 System.Io.Path의 방법을 사용하여 분석 파일을 작성 값은 0보다 작습니다. 'LastIndexOf'에 대한 문서를 읽고 어떤 조건에서 0보다 작은 수를 반환하는지 확인하십시오. 그런 다음 프로그램을 디버그하고 그 값을 반환하는 이유를 확인해야합니다. –

+0

나는 당신이 당신의 코멘트를 사는 것을 의미하는 것을 얻지 못한다. 당신은 더 많은 것을 설명 할 수있다. –

답변

1

문제는 LastIndexOf가 발견되지 않습니다. 파일 이름에. 그러면 -1이 SubString으로 전달되어 사용자가보고있는 오류를 throw합니다.

대신 자신은

System.IO.Path.GetDirectoryName(filename) 
    System.IO.Path.GetFileName(filename) 
    System.IO.Path.GetFileNameWithoutExtension(filename) 

Private Sub btnSaveImages_Click(ByVal sender As _ 
    System.Object, ByVal e As System.EventArgs) Handles _ 
    btnSaveImages.Click 

    For Each pic As PictureBox In flpPictures.Controls 
     Dim bm As Bitmap = pic.Image 
     Dim path As String = pic.Tag 
     Dim filename = IO.Path.GetFileName(path) 
     Dim ext = IO.Path.GetExtension(path) 
     Dim full_name = IO.Path.Combine(txtDirectory.txt, filename) 

....

+0

그 코드를 어디에 추가해야합니까? 태초에? –

+0

예를 추가했습니다. – FloatingKiwi