none
vb.net 2008 System.IO.Path.GetFileNameWithoutExtension 的問題 RRS feed

  • 問題

  • Private Sub VScrollBar1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles VScrollBar1.ValueChanged
            Dim i As Integer
            Label3.Text = VScrollBar1.Value

            ChangeFlag = False
            For i = 1 To 16
                Me.Panel1.Controls("Song" & CStr(i)).Text = CStr(VScrollBar1.Value * 16 + i)                     '看是哪一頁要把資料從陣列讀回去 label

                ' Me.Panel1.Controls("WaveFileName" & CStr(i)).Text = System.IO.Path.GetFileNameWithoutExtension(WaveFileName(VScrollBar1.Value * 16 + i)) 
               '小弟如果使用了這一行,不知道為什麼就WaveFileName裡面的字串原本是 "xxx.wav" 可是後來在去看他的時候就變成"xxx.wav  就少了右邊的引號為什麼會這樣

                '原本下面這一行是有帶副檔名的,因為有xxx.wav我想把副檔名去除所以使用了上面那個東西,再這裡都不會有問題

                Me.Panel1.Controls("WaveFileName" & CStr(i)).Text = (WaveFileName(VScrollBar1.Value * 16 + i))    '看是哪一頁要把資料從陣列讀回去 WavePath

                Me.Panel1.Controls("WaveFileSize" & CStr(i)).Text = WaveFileSize(VScrollBar1.Value * 16 + i)     '看是哪一頁要把資料從陣列讀回去  WaveFileSize
                Me.Panel1.Controls("WaveTime" & CStr(i)).Text = WaveTime(VScrollBar1.Value * 16 + i)
            Next
            ChangeFlag = True

        End Sub

    2009年8月21日 上午 07:57

解答

  • 怎麼會有雙引號?GetFileNameWithoutExtension裡面的字串是對的嗎?還是您要用Mid函數來處理...

            Dim strPath As String = "d:\1.bmp"
            Me.TextBox1.Text = Mid(strPath, 1, strPath.Length - 4)
    2009年8月21日 上午 08:24

所有回覆

  • 怎麼會有雙引號?GetFileNameWithoutExtension裡面的字串是對的嗎?還是您要用Mid函數來處理...

            Dim strPath As String = "d:\1.bmp"
            Me.TextBox1.Text = Mid(strPath, 1, strPath.Length - 4)
    2009年8月21日 上午 08:24
  • Joe大哥,真的很感謝妳,這個可以用了,小弟還發生了一個意外的插曲,我在debug模式下設斷點,結果VScrollBar1的顯示變的很奇怪
       Dim i As Integer
            Dim namebuffer As String
            Label3.Text = VScrollBar1.Value

            ChangeFlag = False
            For i = 1 To 16
                Me.Panel1.Controls("Song" & CStr(i)).Text = CStr(VScrollBar1.Value * 16 + i)                     '看是哪一頁要把資料從陣列讀回去 label


                ' Me.Panel1.Controls("WaveFileName" & CStr(i)).Text = System.IO.Path.GetFileNameWithoutExtension(WaveFileName(VScrollBar1.Value * 16 + i))    '看是哪一頁要把資料從陣列讀回去 WavePath


                namebuffer = (WaveFileName(VScrollBar1.Value * 16 + i))
                If namebuffer <> "" Or namebuffer <> Nothing Then
                    Me.Panel1.Controls("WaveFileName" & CStr(i)).Text = Mid(namebuffer, 1, namebuffer.Length - 4) '看是哪一頁要把資料從陣列讀回去 WavePath
                Else
                    Me.Panel1.Controls("WaveFileName" & CStr(i)).Text = Nothing
                End If

                Me.Panel1.Controls("WaveFileSize" & CStr(i)).Text = WaveFileSize(VScrollBar1.Value * 16 + i)     '看是哪一頁要把資料從陣列讀回去  WaveFileSize
                Me.Panel1.Controls("WaveTime" & CStr(i)).Text = WaveTime(VScrollBar1.Value * 16 + i)
            Next
            ChangeFlag = True     

    end sub 小弟在此設斷點,為什麼有時候我的拉霸就壞掉了,他就顯示不太出來要重開

    2009年8月21日 上午 08:48
  • 還是您要用MsgBox或Debug.Print來檢查呢...
    2009年8月21日 上午 08:56
  • 請問joe大哥,這兩種方法要怎麼使用阿,小弟都沒用過

    2009年8月21日 上午 08:57
  • 比如說您要檢查VScrollBar1.Value的數值,MsgBox會跳出訊息,Debug.Print會在右下角畫面輸出,您就不用下中斷點了...

    MsgBox (CStr(VScrollBar1.Value))
    Debug.Print (VScrollBar1.Value)
    2009年8月21日 上午 09:04
  • Joe大哥感謝你指導小弟
    2009年8月21日 上午 09:16