2016-08-17 9 views
-3

Я нахожу код на 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

Это говорит вам, что вы пропусканием значение меньше 0 на 'Подстрока'. Прочитайте документы для 'LastIndexOf' и посмотрите, при каких условиях он может вернуть число меньше 0. Затем вам придется отлаживать вашу программу и видеть, почему она возвращает это значение. –

+0

Я не понимаю, что вы имеете в виду, купите свой комментарий, можете ли вы объяснить больше, пожалуйста, –

ответ

1

Проблема в том, что LastIndexOf не находит. в вашем имени файла. Затем он передает -1 в SubString, который выдает ошибку, которую вы видите.

Вместо того, чтобы писать файл разбора самостоятельно использовать методы System.Io.Path, такие как

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