2016-08-17 43 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

它告诉你,你传递的“Substring”的值小于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